base
preámb
ulo
ThinkPHP
instalación
Desarrollar
estructura de
directorios
estandarizada
arquitec
tura
Descripción
de la
arquitectura
del ciclo de
vida URL
módulo de
acceso
archivo de
entrada de
diseño de
espacio de
nombres se
carga
automáticame
nte en el
Traitss API-
amigable
configu
ración
configuración
configuración
de directorio
de
Utilice este - 11
documento en -
viendo las nubes
construcción de
vista
Ver S de un
motor de
plantilla de
ejemplo
plantilla
asignación
plantilla de
salida
representació
n cambio
musgo
plantilla
Plantilla de
etiquetas de
sistema de
posicionamie
nto variable
de variable de
salida usando
los
parámetros
de la petición
de función
utilizando el
operador
utiliza el valor
por defecto
es generado
como un
archivo de
plantilla
comentario
operador
ternario
plantilla que
Utilice este -6-
documento en
viendo las nubes
construcción de
comprende
una etiqueta
herencia
biblioteca de
etiquetas
plantilla de
diseño
integrado
etiqueta
etiqueta
etiqueta de
salida cíclica
archivo de
recursos
enjuiciamient
o de la
condición de
comparación
de etiquetas
se carga
definido PHP
nativo
anidada
revista
l boca
Log log de
conducción
escribir un
registro de
registro
separado
vacía
Utilice este - 11
documento en -
viendo las nubes
construcción de
pref
acio
prefacio
Vender leer manuales Notas: Este manual es sólo para la versión ThinkPHP5.0
(usando los botones izquierdo y derecho (<· · y>) Página de venta de leer)
Utilice este - 13
documento en -
viendo las nubes
construcción de
pref
acio
Este manual no puede musgo en nombre del tutorial, sino como una herramienta
de referencia para saber si se recomienda el principiante que lea la venta oficial "
5.0 Introducción Departamento Tutorial de la columna "
ThinkPHP autoridad oficial QQ grupo V5.0
grupo principiante (272433397 sistema abierto)
permite Chetan (miembro de pleno derecho) dos
grupos de novatos (369126686 sistema abierto)
permite Chetan (miembro de pleno derecho)
Grupo mayor (50546480 sistema de tasas)
Aviso deel Copyright
prohibir grupo de expertos de charla (416 914
Este
496material
sólo porpuede estar sujeto
invitación) a la Open
relativamente Publication License, v1.0 o posterior.
tranquilo
Sin la autorización expresa del propietario del copyright está prohibido y este
documento en cuestión es esencialmente una versión modificada de la verdad. Sin
previa autorización del propietario del copyright para prohibir esta y realmente
hacer de grano de cristal derivada para la emisión de una forma de libro estándar
(papel). Si usted está interesado en la redistribución o la totalidad de la re-edición
del manual o en parte, ya sea modificado o no, o si tiene alguna pregunta, por
favor, póngase en contacto con los propietarios del copyright thinkphp@qq.com.
Para ThinkPHP tiene alguna pregunta o sugerencia, por favor vaya al foro oficial [
[Http://www.thinkphp.cn/tOPIC] (Http://www.thinkphp.cn/tOPIC) ] Soltar las discusiones
relacionadas.
Utilice este - 10 -
documento en
viendo las nubes
construcción de
pref
acio
contenido, divulgación o distribución, dará lugar a la responsabilidad legal
correspondiente.
donamos
ThinkPHP recta comprometido a simplificar el desarrollo de aplicaciones
empresariales manos WEB de los individuos, su ayuda es nuestro mayor parte de
apoyo
Poder!
Utilice este - 11 -
documento en
viendo las nubes
construcción de
pref
acio
Utilice este - 12 -
documento en
viendo las nubes
construcción de
pref
acio
uso de 5,0 enrutamiento, la mano completa y detallada de la boca l La vía de
administración, y contiene una gran cantidad de trucos de la mano el uso
avanzado.
Utilice este - 13 -
documento en
viendo las nubes
construcción de
pref
acio
Utilice este - 14 -
documento en
viendo las nubes
construcción de
fun
daci
ón
fun
daci
ónThinkPHP instalación
Desarrollar
estructura de
directorios
estandarizada
Utilice este - 15 -
documento en
viendo las nubes
construcción de
ThinkPHP
instalación
ThinkPHP instalación
canallal - sS h t t p s : // g e t c o m p o s e r . o r g / i n s t a l l e r
yo p h p m v c o m p o s e r . ph a r / U s r / l o c a l / b i n /
compositor
Utilice este - 17 -
documento en
viendo las nubes
construcción de
ThinkPHP
instalación
componerr c r e a r - p r o je c t t o p t h i n k / p i e n s a n = 5 , 0 . * t p 5 --prefer-dist
Si el acceso nacional componerr Más lentamente, puede ser descrito aquí con
referencia auso doméstico espejo
Tres, la instalación de Git
Si usted no entiende o siente Compositor Composer es demasiado lento, también
se puede utilizar para instalar git mano repositorio más
Nuevo, ThinkPHP5.0 en múltiples almacenes, el paquete principal de inserción:
Si visita github lenta, considere los dos siguientes repositorio GIT interno:
[ Código nube]
Las páginas de aplicación: https://git.oschina.net/liu21st/thinkphp5.git
Core / marco: https://git.oschina.net/liu21st/framework.git
[ codificación]
Las páginas de aplicación: https://git.coding.net/liu21st/thinkphp5.git
Core / marco: https://git.coding.net/liu21st/framework.git
git C l o ne h t t p s : / / g it h u b . c o m / t o p - t h i n k / t h i n k t p 5
git C l o ne h t t p s : / / g it h u b . c o m / t o p - t h i n k / f r a m e w o r k T h i n k P H P
Utilice este - 18 -
documento en
viendo las nubes
construcción de
ThinkPHP
instalación
Después de dos almacenes de clonación se completa de manera completa, Git
ThinkPHP5.0 para descargar, si es necesario actualizar el marco de núcleo /
Cuando sólo tenga que cambiar Llthinkphp núcleo / directorio, a continuación,
ejecutar:
Utilice este - 19 -
documento en
viendo las nubes
construcción de
ThinkPHP
instalación
git P u ll h t t p s : / / g i th u b . c o m / t o p - t h i n k / f r a m e w o r k
No importa qué manera se obtiene el marco ThinkPHP, ahora sólo tiene que
dirección en su navegador:
Utilice este - 21 -
documento en
viendo las nubes
construcción de
ThinkPHP
instalación
Utilice este - 22 -
documento en
viendo las nubes
construcción de
Desarrol
lo de
normas
Desarrollo de normas
convención de nomenclatura
ThinkPHP5 seguir el PSR-4 Especificación convenciones de nomenclatura PSR-2
cargador automático lado, y tenga en cuenta las siguientes especificaciones:
Utilice este - 24 -
documento en
viendo las nubes
construcción de
Desarrol
lo de
normas
Utilice este - 25 -
documento en
viendo las nubes
construcción de
Estructu
ra de
directori
os
Estructura de directorios
Utilice este - 20 -
documento en
viendo las nubes
construcción de
Estructu
ra de
directori
os
Desde la versión 5.0 trajo una estructura de directorios por defecto la aplicación
completa de la mano de las aplicaciones de los documentos de importación, los
desarrolladores pueden ajustarse de forma flexible sobre esta base.
Utilice este - 21 -
documento en
viendo las nubes
construcción de
arq
uite
ctur
a
arq
uite
ctur
Descripción de la arquitectura
a -Ciclo de vida
de archivos
de entrada
del módulo
URL de
acceso al
espacio de
nombres
diseñado para
cargar
automáticame
nte en Traitss
API-amigable
Utilice este - 22 -
documento en
viendo las nubes
construcción de
Descripc
ión de
la
arquitec
tura
Descripción de la arquitectura
patrón de diseño MVC es la entrada E hace que la aplicación obligatoria, el procesamiento de salida de
mano por separado. Uso de la aplicación MVC se divide en tres de núcleo / componentes: el modelo
(M), una vista (V), el controlador (C), E tienen sus propias tareas de procesamiento.
archivo de entrada
archivos PHP solicitados por el usuario, es responsable de procesar las solicitudes
(tenga en cuenta que la solicitud de URL es incierto) ciclo de vida, los más comunes
El archivo de entrada es index.php, a veces para algunas necesidades especiales,
mientras que la adición de nuevos documentos de importación, tales como un
módulo independiente establecido en el fondo de las entradas admin.php
controladores de entrada de archivo o programa piensan que pertenecen archivo
de entrada.
solicitud
La aplicación es un ciclo de la arquitectura del sistema de gestión y la vida
objeto en ThinkPHP en el sistema \ pensar \ clase de aplicaciones
Completos, las aplicaciones se invocan con frecuencia la mano en la ejecución de
archivos de entrada, con el mismo directorio de la aplicación (APP_PATH) Creemos
que la aplicación de las mismas aplicaciones, pero las aplicaciones pueden ser
archivos de entrada múltiple.
Utilice este - 23 -
documento en
viendo las nubes
construcción de
Descripc
ión de
módulo
la
arquitec
Las aplicaciones
tura típicas son una pluralidad de módulos, estos módulos son
típicamente subdirectorios de la aplicación del directorio, cada uno
Módulo tiene sus propios perfiles separados, lima manual en archivos públicos
biblioteca.
5.0 es compatible con un solo módulo de diseño de arquitectura, solamente si se aplican los
siguientes módulos, entonces los subdirectorios de este módulo se pueden omitir, y modificar el
Utilice este - 24 -
documento en
viendo las nubes
construcción de
Descripc
ión de
la
arquitec
tura
controlador
Cada módulo tiene una separada bibliotecas MVC y archivos de configuración, los
siguientes módulos tienen varios controladores responsables de medio día a petición
de, y cada
Un controlador real es una clase de controlador separado.
5.0 clase controlador más flexible, puede no necesitar para heredar cualquier
biblioteca de clases base.
operativo
El controlador comprende una pluralidad de operaciones (métodos), métodos de
operación es la unidad mínima para acceder a un URL.
Utilice este - 25 -
documento en
viendo las nubes
construcción de
Descripc
ión de
la
arquitec
tura
Utilice este - 26 -
documento en
viendo las nubes
construcción de
Descripc
ión de
la
arquitec
tura
modelo
clase Modelo suelen realizar la lógica de negocio real mano encapsulación de datos, y
la mano vuelve fórmula verificados datos irrelevantes.
5.0, sólo la base de datos real consulta cuando se conecta la base de datos, la conexión es
verdaderamente inerte. ThinkPHP capa del modelo soporta el diseño de múltiples capas, que puede
hacer la división más refinada diseño de la mano de la capa del modelo, por ejemplo, la capa del
modelo se divide en capa lógica / capa de servidor / capa de eventos, y así sucesivamente.
vista
Se devuelve la vista de clase llamadas controlador modelo de los datos reunidos en
diferentes tipo de salida verificada. Ver de acuerdo a las diferentes necesidades, a
S decisión de llamar a la salida del motor de plantillas o salida directa analiza el
contenido.
drive
Muchos sistemas utilizan componentes de diseño accionados, que puede ser la
posición predeterminada clase extensión más flexible de la unidad en un núcleo /
directorio de la biblioteca, se puede redefinir el espacio de nombres biblioteca de
controladores y cambiar la ubicación del archivo impulsada.
comportamiento
Comportamiento (comportamiento) en una posición predefinida estas
operaciones efectuadas por la aplicación. programación similar AOP
El concepto de la sección M "de unirse a una sección relacionada con los
comportamientos convirtió en una especie de pensar la programación de AOP. Por lo
Utilice este - 27 -
documento en
viendo las nubes
construcción de
Descripc
ión de
tanto,
la
el comportamiento se relaciona a menudo con una ubicación en la mano, el
comportamiento de tiempo de ejecución depende de la posición en la Ll vinculante.
arquitec
tura
Para llevar a cabo un comportamiento, debe realizar primero un oyente en su
aplicación, por ejemplo:
// La unión a la conductaapp_initubicación
\ Piense \ Gancho :: add ( 'app_init', '\ app \ index \ comportamiento \ Test');
Utilice este - 28 -
documento en
viendo las nubes
construcción de
Descripc
ión de
la
arquitec
tura
Si las posiciones de unión sobre una serie de actos, de acuerdo con el orden de las
páginas de búsqueda seguido de la puesta en práctica de la unión, a no ser en caso
de interrupción Ll.
Utilice este - 29 -
documento en
viendo las nubes
construcción de
ciclo de
vida
ciclo de vida
1, archivo de entradas
solicitud iniciada por el usuario se aplica a través de la entrada del archivo, el
archivo general pública / index.php. Por supuesto,
También puede cambiar o añadir un nuevo archivo de
el siguiente:
Al igual que algunos archivos de entrada constante para definir las principales
constantes de apoyo se refieren al contenido o el apéndice posterior.
2, s archivo de guía
Luego está la implementación de guía el documento marco s, sistema de
archivos por defecto start.php es un archivo de guía s. guía S en
Archivo, realiza las siguientes operaciones en secuencia:
Utilice este - 31 -
documento en
viendo las nubes
construcción de
ciclo de
vida
De.
carga de la página
automáticamente la biblioteca
son: 1. si la biblioteca se
define el mapeo;
eficiente.
Utilice este - 32 -
documento en
viendo las nubes
construcción de
ciclo de
vida
Se compone de tres partes:
Inscríbete facilidad de uso método Close es interceptar algunos errores del sistema.
5, la aplicación de inicialización
ejecución de paso de la operación de aplicación de la aplicación se inicializa, en el
prospecto:
Utilice este - 33 -
documento en
viendo las nubes
construcción de
ciclo de
vida
URL de acceso 5.0 debe ser URL manera dirección de PATH_INFO (modo de
compatibilidad prospecto), por ejemplo:
http: //serverName/index.php/index/index/hello/val/value
Por lo tanto, si su entorno sólo puede soportar parámetros de URL forma común de
acceso, debe utilizar
$ Php i n d e x . p h p i n d ex / ín d i c e / h o l a / v a l / v a l o r . . .
Utilice este - 34 -
documento en
viendo las nubes
construcción de
ciclo de
vida
7, la detección de enrutamiento
Si activa url_route_on parámetros, primero se dirigirá a detectar la URL.
Utilice este - 35 -
documento en
viendo las nubes
construcción de
ciclo de
vida
encaminamiento; Dirección de
8, la solicitud de distribución
Después de completar la detección de URL para detectar enrutamiento mano, el
router distribuir peticiones LL dirección de encaminamiento, que es la solicitud de
aplicación correspondiente
El ciclo de vida de los eslabones más importantes.
Utilice este - 30 -
documento en
viendo las nubes
construcción de
ciclo de
vida
distribución soportado por el sistema, se puede elegir de acuerdo a la situación:
método Controller
maneras similares antes de la mano, pero sin módulo de determinación, el
controlador de accionamiento manual, una solicitud de entrega directa Ll
especifica el controlador
El método de la clase, por lo que no hay ningún módulo de inicialización.
redireccionadas
Utilice este - 30 -
documento en
viendo las nubes
construcción de
ciclo de
vida
la función de cierre
Cuando la dirección de encaminamiento definida por la función de cierre se puede
utilizar directamente para completar algunas relativamente simple operador lógico la
salida.
inserción de la mano del usuario sistema de bolsa de registro del sistema de salida
de depuración generada automáticamente ingrese operación de escritura CE en el
momento de la final de la aplicación.
Utilice este - 31 -
documento en
viendo las nubes
construcción de
archivo
de
entrada
archivo de entrada
Public Directorios para el directorio web accesible, que realmente ponen archivo Ll está disponible
Utilice este - 32 -
documento en
viendo las nubes
construcción de
archivo
de
sistema
entrada
de archivos de entrada también puede definir algunas variables relevantes
para la operación de unión (utilizado normalmente para una pluralidad de
entrada), esto implicará la espalda, dejó a un lado.
sistema. En algunos casos, puede que tenga que cargar la base del documento
Utilice este - 33 -
documento en
viendo las nubes
construcción de
archivo
de
entrada
Utilice este - 34 -
documento en
viendo las nubes
construcción de
el
acceso
URL
el acceso URL
URL Diseño
ThinkPHP 5.0 En ausencia de una ruta típica URL habilitadas las reglas de acceso son:
Nota: 5.0 eliminado el concepto de patrones de URL y URL para acceder al modo
normal ya no es compatible, pero los parámetros pueden apoyar de manera normal
por valor, por ejemplo:
caso URL
Por defecto, la dirección URL no entre mayúsculas y minúsculas, lo que significa que
el URL dentro del controlador nombre del módulo / / acción se apagará
automáticamente
Cambiar a minúsculas, el controlador en el momento de la
Utilice este - 35 -
documento en
viendo las nubes
construcción de
el
acceso
URLhttp: //localhost/index.php/Index/Blog/read
// Y los siguientes son de acceso equivalente
http: //localhost/index.php/index/blog/read
http: //localhost/index.php/Index/BlogTest/read
Utilice este - 36 -
documento en
viendo las nubes
construcción de
el
acceso
URL
En este caso URL es sensible a las mayúsculas, si desea acceder al método de la clase
controlador de la joroba, se necesita:
http: //localhost/index.php/Index/blog_test/read
http: //localhost/index.php/Index/BlogTest/read
http: //localhost/index.php/Index/blog_test/read
http: //localhost/index.php/Index/blogtest/read
Utilice este - 37 -
documento en
viendo las nubes
construcción de
el
acceso
En ThinkPHP5.0, el principio de optimización para el acceso URL, pero también es
URL
compatible con archivos de reescritura de URL entrada oculta, a la siguiente
Apache un ejemplo del archivo index.php portal de aplicación oculta. El siguiente
es el proceso de configuración de Apache, puede hacer referencia a lo siguiente:
1, archivo de configuración httpd.conf para cargar el módulo mod_rewrite.so
Utilice este - 38 -
documento en
viendo las nubes
construcción de
el
acceso
URL
<IfModule m o d _ r e w r i te . c >
opcións + F o l l o w S y m li n k s -
Multiviews RewriteEngine en
RewriteCond % REQUEST_FILENAME} ! -d
RewriteCond % REQUEST_FILENAME} ! -f
RewriteRule Ocho (. *)$ i n d e x . p h p [QSA, PT, L]
</ IfModule> / $ 1
E entorno más cierto entrada oculta detrás del archivo de referencia reescritura de
URL
Utilice este - 39 -
documento en
viendo las nubes
construcción de
Diseño
del
módulo
Versión 5.0 de los módulos funcionales hizo diseño flexible, la arquitectura multi-
módulo por defecto, y soporta el diseño único módulo, todos los módulos son de
espacio de nombres como la aplicación de espacio de nombres raíz (cambios de
configuración disponibles).
Estructura de directorios
módulo de aplicación estructura de directorios estándar de la mano de la siguiente
manera:
aplicación Bu Directorio de
BU común aplicación (ajustable)
common.php Bu catálogo de módulos
route.php Bu Pública archivo
database.php (opcional) la función
Bu pública de
Bu config.php enrutamiento
modulo1
Bu Bu archivo de
config.php configuración de la
common.php aplicación perfil de
Bu base de datos
controlador módulo de archivo
Bu de
modelo BU configuración1archiv
BU
modulo2 o de configuración
módulo2director
Bu vista
Bu io
del módulo de
config.php
Ldivino modelo de de
controlador
. common.php
.. controlador de
configuración
Bu directorio
del módulo del
de
controlador directorio de
Bu función de
archivos de
modelo BU módulo de directorio
BU directorio de la
función modelo
vista librería
de adicional
archivo de
Siga ThinkPHP
Ldivino convencionesdirectorio
de nomenclatura
(opcional) (opcional) 5.0, módulo de directorio utilizado en
todos los. escritores
.. Ver
pequeñas catálogo
subrayó
directorio denombre.
la
librería adicional
(opcional)
Evitar el uso de nombre de(opcional)
móduloVer PHP palabra clave reservada (véase la
catálogo
lista de palabras reservadas http://php.net/manual/zh/reserved.keywords.php ), De
lo contrario hará que los errores del sistema.
módulo de cierto en común es un módulo especial está desactivado por defecto
directamente accesible, al igual que algunas clases públicas para colocar
módulos de biblioteca para realmente lo logran.
Utilice este - 40 -
documento en
viendo las nubes
construcción de
Diseño
del
librería de módulos
módulo
Utilice este - 41 -
documento en
viendo las nubes
construcción de
Diseño
del
módulo
// i n d e xmóduloíndiceclase del
controlador aplicación \ index \
Controlador \ Índice
// i n d e xmódulousuarioClase
modelo aplicación \ index \
modelo \ Usuario
Para más información sobre la relación entre las manos bibliotecas espacio de
nombres puede hacer referencia a las siguientes secciones: espacio de nombres.
Utilice este - 42 -
documento en
viendo las nubes
construcción de
Diseño
del
// La actual visita a unirseíndicemóduloíndicecontrolador
módulo
define ( 'BIND_MODULE', 'index / index');
Utilice este - 43 -
documento en
viendo las nubes
construcción de
Diseño
del
módulo
solo módulo
Si su aplicación es relativamente simple, la única sólo un módulo, que puede
progresar a simplificar el uso de la estructura de un solo módulo, cuadrado
Método de la siguiente
el archivo de configuración de
la aplicación:
aplicación Bu Directorio de
controlador Bu aplicación
modelo BU (ajustable)
Ver BU Las funciones
divino . . . de catálogo
common.php Bu vista de
route.php Bu catálogo de la
biblioteca
Bu Bu
Catálogo de
database.php L
modelos de
config.php
catálogo del
controlador
la dirección URL de acceso mássearchivo
convierte
de
enrutamiento
http: //serverName/index.phpperfil Los
(aplicaciones de correo o de entrada eucariota) / controlador / acción /
perfiles de
[nombre de parámetro / valorbase
de parámetro
de datos ...]
de perfil
Mientras tanto, la Biblioteca de diseño de espacio de nombres único módulo de
aplicación también se puede modificar, por ejemplo:
el original
Más URL personalizada para simplificar la mano también se puede lograr mediante el
enrutamiento de URL.
Utilice este - 45 -
documento en
viendo las nubes
construcción de
Diseño
del
módulo
Utilice este - 40 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s
nombres de PHP
// mal uso
$ Class = N e b r a s k a w s t d C l a s s ( ) ;
$ Xml = Nebraskaw S i m p l e X M L El e m e n t ( $ x m l s t r ) ;
// El uso correcto
$ Class = N e b r a s k a w \ S t d C l a s s ( ) ;
$ Xml = Nebraskaw \ S i m p l e X ML E l e m e n t ( $ x m l s t r ) ;
En ThinkPHP 5.0, sólo para dar la correcta definición del espacio de nombres de
biblioteca de clases se encuentra, y la ruta de espacio de nombres y bibliotecas
archivos del directorio de causa, entonces se puede cargar
archivos son:
namespace p e n s a r \ \ d r i v e r
Utilice este - 41 -
documento en
viendo las nubes
construcción de
Los
espacios
de
Si creamos una instancia de la clase, que debe ser:
nombre
s
$ Class = N e b r a s k a w \ P i e n s e \ c a c h e \ d r i v e r \ F i l e ( ) ;
Utilice este - 42 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s
$ Class = N e b r a s k a w \ P i e n s e \ C a c h e \ D r i v e r \ A r c h i v o s ( ) ;
Utilice este - 43 -
documento en
viendo las nubes
construcción de
Los
espacios
de Tenga en cuenta que el código de ejemplo en este manual para mayor brevedad,
nombre
s sin clase designada espacio de nombres biblioteca, entonces, haber dicho en
referencia a
delgadok Espacio de nombres, por ejemplo el siguiente código:
registro automático
\ Piense \ Ruta :: get ( 'hola', 'index / hola');
Utilice este - 44 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s
namespace m i s
clas;s prueba
Public f u n c i o n s a y H el l o ( )
$ Test = N e b r a s k aw \ M y \ T e s t ( ) ;
$ Ensayos> sayHello ();
El registro manual
También puede registrar nuevo espacio de nombres raíz a través de registro manual,
por ejemplo:
Utilice este - 43 -
documento en
viendo las nubes
construcción de
Los
espacios
de \ Piense \ cargador :: addNamespace ([
nombre 'Mi' => ' . . / a p p l i c a t i o n / e x t e n d / m y / ' ,
s 'org' => '../application/extend/org/',
]);
Utilice este - 44 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s
'Root_namespace' = > [
'Mi' => ' . . / a p p l i c a t i o n / e x t e n d / m y / ' ,
'org' => '../application/extend/org/',
]
namespace a p p \ i n d ex \ m o d e l o ;
class u s o r a m p l i a r s \ P i e n s e \ M o d e l o
namespace a p p \ a d m in \
Utilice este - 45 -
documento en
viendo las nubes
construcción de
Los
espacios
de namespace a p l i c a c i ón \ i n d e x \
nombre
s modelo; class usor ampliars \
Piense \ Modelo
Utilice este - 46 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
}
En el controlador de modo original dentro llamar:
namespace a p l i c a c i ón \ i n d e x \
class ín d i c e
Public f u n c i o n i n d e x ( )
$ usor = N e b r a s k aw Us u a r i o ( ) ;
}
}
Si se registra el espacio de nombres en la aplicación de los documentos públicos alias
de la siguiente manera:
namespace a p l i c a c i ón \ i n d e x \
Usuario;
class ín d i c e
Public f u n c i o n i n d e x ( )
$ usor = N e b r a s k aw Us u a r i o ( ) ;
}
}Los capítulos siguientes de este manual se basan en los espacios
de nombres de PHP que ya sabes lo anterior, tales como
Utilice este - 47 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s
Utilice este - 48 -
documento en
viendo las nubes
construcción de
cargará
automát
icament
e
cargará automáticamente
contorno
ThinkPHP5.0 verdaderamente encontrado para ser cargado, todas las bibliotecas con
mecanismo de carga automática, y es compatible con la biblioteca asignada mano
biblioteca compositor se carga automáticamente.
cargará automáticamente
Debido a las características del nuevo espacio de nombres ThinkPHP por completo,
por lo que acaba de dar la definición correcta de la biblioteca de clases, donde el
espacio de nombres
Las habitaciones, aunque la causa ruta del directorio y archivo de la biblioteca de
Cartoteca
Siga nuestra definición de espacio de nombres en las especificaciones, puede
biblioteca de clases básicamente completa cargar automáticamente, pero si se define
Los espacios de nombres más, entonces se reducirá la eficiencia, por lo que podemos
dar a la definición de la cartografía de la biblioteca biblioteca común. Equivalente al
archivo de asignación de nombre de biblioteca de clases define los alias, la eficiencia
se sitúa sobre el espacio de nombres más eficientes, tales como:
Utilice este - 49 -
documento en
viendo las nubes
construcción de
cargará
automát
Cargador :: addClassMap ( 'pensar \ Log', LIB_PATH.'think \ log.php ');
icament
e cargador :: addClassMap (' org \ util \ array 'LIB_PATH.'org \ util \
Array.php');
$ Map = [
'Think \ Log' => LIB_PATH.'think \ log.php',
'Org \ util \ array' LIB_PATH.'org \ util \
]; => Array.php '
Cargador :: addClassMap ($
mapa);
Utilice este - 50 -
documento en
viendo las nubes
construcción de
cargará
automát
icament
e
biblioteca de importación
Si usted no tiene el sistema cargará automáticamente la función, o no usar espacios
de nombres, entonces puede utilizar
pensar \ Loader archivos de la biblioteca de clases cargadas importar
manualmente método, por ejemplo:
Cargador :: import (
'org.util.array'); cargador :: import
( '@ util.upload.');
Ejemplos
// La introducción de extender /
qrcode.php cargador :: import ( 'QR',
ExTEND_PATH);
// función de ayuda
import ( 'QR', E x T E N D _P A T H ) ;
Utilice este - 51 -
documento en
viendo las nubes
construcción de
cargará
automát
sistemas
icament
de biblioteca
de la biblioteca l l lappl
e
Utilice este - 52 -
documento en
viendo las nubes
construcción de
cargará
automát
icament
e
Utilice este - 53 -
documento en
viendo las nubes
construcción de
rasgoss en
Traitss en
ThinkPHP 5,0 rasgo comenzó a usar la función (PHP5.4 +) como una especie de
mecanismo de expansión, puede lograrse fácilmente
cuestión herencia múltiple de una biblioteca.
Sin embargo, debido a la versión PHP5.4 no admite rasgo de carga automática, por
lo que si la versión PHP5.4 se debe introducir manualmente la biblioteca rasgo, el
sistema proporciona una load_trait función auxiliar, para la carga automática de la
biblioteca rasgo, por ejemplo, puede ser adecuadamente s la biblioteca rasgo.
namespace a p p \ i n d ex \ c o n t r o l a d o r ; l o a d _ t r a i t (
nosotrose \ R a s g o s \ c o n t r o l a d o r \ s a l t o ;
Public f u n c i o n i n d e x ( )
Utilice este - 50 -
documento en
viendo las nubes
construcción de
rasgoss en
namespace a p p \ i n d ex \
c o n t r o l a d o r ; c l a s s ín d i c e
nosotrose \ R a s g o s \ c o n t r o l a d o r \ s a l t o ;
Public f u n c i o n i n d e x ( )
}
}
Utilice este - 50 -
documento en
viendo las nubes
construcción de
rasgoss en
namespace a p p \ i n d ex \ c o n t r o l a d o r ;
load_trait ( 'controlador /
Other'); load_trait ( 'controlador
/ Jump');
class ín d i c e
nosotrose \ Rasgos \
Controlador \ Otros;
nosotrose \ Rasgos \
controlador \ salto;
Public f u n c i o n i n d e x ( )
}
}
o el uso
namespace a p p \ i n d ex \ c o n t r o l a d o r ;
load_trait ( 'controlador /
Other'); load_trait ( 'controlador
/ Jump');
class ín d i c e
nosotrose \ R a s g o s \ C o n t r o l a d o r \ O t r o s , \ r a s g o s \ C o n t r o l a d o r \
Salto;
Public f u n c i o n i n d e x ( )
}
}
Utilice este - 51 -
documento en
viendo las nubes
construcción de
rasgoss en
Utilice este - 52 -
documento en
viendo las nubes
construcción de
rasgoss en
Redefiniendo.
Resolución de conflictos
Nos s Rasgo en una pluralidad de librerías de clases en una biblioteca, si los
dos rasgo definir un método del mismo nombre,
Si no hay una solución clara al conflicto producirá un error fatal.
Para hacer frente a múltiples rasgo conflicto de nombres en las mismas clases,
tenemos que utilizar insteadof operador para especificar explícitamente cuál de
estos métodos en conflicto.
Por encima de forma sólo permite cierto método negativo golpe E, ya que el
operador puede ser cierto en un conflicto de otro modo a los nombres s.
Utilice este - 53 -
documento en
viendo las nubes
construcción de
API-
amigab
le
API-amigable
La salida de datos
El uso del nuevo sistema de procesamiento de clase de respuesta de salida del
controlador, en lugar de directamente en la salida del controlador, mediante el
establecimiento de
default_return_type o dinámicamente establecer diferentes tipos de datos
de respuesta de salida puede ser automáticamente el proceso de conversión, en
general, sólo tiene que devolver la cadena o matriz en el controlador, por ejemplo, si
configuraciones:
namespace a p p \ i n d ex \
c o n t r o l a d o r ; c l a s s ín d i c e
Public f u n c i o n i n d e x ( )
Después de acceder a la URL solicitada, el resultado final puede ser visto como Ll en
el navegador:
namespace a p p \ i n d ex \
c o n t r o l a d o r ; c l a s s ín d i c e
Public f u n c i o n i n d e x ( )
$ Datuna = [ ' N o m b r e' = > ' T h i n k P H P ' , ' u r l ' = > ' t h i n k p h p . c n ' ] ;
Utilice este - 55 -
documento en
viendo las nubes
construcción de
API-
amigab
le
namespace a p p \ i n d ex \
c o n t r o l a d o r ; c l a s s ín d i c e
Public f u n c i o n i n d e x ( )
$ Datuna = [ ' N o m b r e' = > ' T h i n k P H P ' , ' u r l ' = > ' t h i n k p h p . c n ' ] ;
// denominaciónxmlLa salida de datos
return X M L ( [ ' d a t o s' = > $ d a t a , ' c ó d i g o ' = > 1 , ' m e s s a g e ' = > ' La
operación se ha completado']);
}
}
tipos de núcleo / datos soportados por la vista prospecto, XML, JSON jsonp lado,
que realmente necesita su propio tipo de extensión.
La depuración de errores
Dado que los desarrolladores de la API de cliente conveniente desarrollar la
depuración, pero ThinkPHP5 de seguimiento de funciones de soporte de
depuración
Socket, incluyendo una forma de implementar el
desarrollo remoto y depuración. Configuración manera:
Utilice este - 56 -
documento en
viendo las nubes
construcción de
conf
igur
ació
n
con
figu
raci
ThinkPHP proporciona una función de configuración global flexibles, PHP devuelve
ón
una matriz de la forma más eficiente de definir, con las prácticas de apoyo
Casa, una configuración común, la configuración del módulo, configuración
expandida, la configuración de escena, la configuración dinámica variable de entorno
de configuración de la mano.
Utilice este - 57 -
documento en
viendo las nubes
construcción de
directori
o de
configur
ación
directorio de configuración
directorio de configuración
El directorio de archivos de configuración por defecto está bajo el directorio de
la aplicación (APP_PATH), que es la aplicación por defecto
De superficie, y se divide en configuración de la aplicación de configuración (efectiva
aplicación completa) Módulo de mano (válido sólo para el módulo).
aplicación Bu directorio de
config Bu aplicaciones
Bu archivo de
config.php configuració
n de la
aplicación
del
directorio de
configuració
n
Utilice este - 59 -
documento en
viendo las nubes
construcción de
directori
o de
configur
ación
Utilice este - 60 -
documento en
viendo las nubes
construcción de
configur
ación de
estilo Ke
configuración de estilo Ke
//Perfiles de proyectos
return [
// El nombre del
módulo predeterminado =>
'Default_module' 'Índice',
// Nombre del => 'Índice',
controlador por defecto
'Default_controller' => 'Índice',
// El nombre de la
operación por defecto
'Default_action'
//Más parámetros de
configuración
// de
nombres ...los parámetros de configuración no son sensibles a mayúsculas (porque
];
independientemente de la definición de casos se convierten en minúsculas), la nueva
recomendación es usar minúsculas
Parámetros definen la especificación de la configuración. También puede
//Perfiles de
proyectos
return [ => [
'Caché' => 'Archivo',
'Tipo' => CACHE_PATH,
'Camino' => '',
'prefijo' => 0
'expirará'
],
];
Utilice este - 62 -
documento en
viendo las nubes
construcción de
configur
ación de
estilo Ke
<Config>
<Default_module> Índice </ default_module>
<Default_controller> index </ default_controller>
<Default_action> index </ default_action>
</ Config>
"Default_module":
"Índice",
"Default_controller":
"índice", "default_action":
"índice"
}
configuración secundaria
Soporta dos parámetros de configuración, por ejemplo, se proporciona la siguiente
configuración de dos ejemplos mano tomada Venta:
Utilice este - 63 -
documento en
viendo las nubes
construcción de
configur
ación de
estilo Ke
$ Config = [
'usuario' => [
'Tipo' => 1,
'Nombre' => 'ThinkPHP',
],
'Db' => [
'Tipo' => 'MySQL',
'Usuario => 'Raíz',
'
'Contraseña' => ''
],
];
// parámetros de
configuración Conjunto
Config :: set ($
config);
Utilice este - 64 -
documento en
viendo las nubes
construcción de
configur
ación de
estilo Ke
configuración se define como dos vías (como una mano xml de ejemplo para INI):
[Usuario
] type =
1
name = ThinkPHP
[DB] type =
mysql user =
contraseña rot =
''
<Config>
<Usuario>
<Tipo> 1 </ type>
<Nombre> ThinkPHP </ name>
</ Usuario>
<Db>
<Tipo> mysql </ type>
<Usuario> root </ usuario>
<Contraseña> </ password>
</ Db>
</ Config>
Config :: set
([ => 'Archivo'
'Tipo' => ,
'prefijo' 'Think'
], 'Cache');
Utilice este - 60 -
documento en
viendo las nubes
construcción de
configur
ación
cargada
configuración cargada
configuración diferente:
convención de configuración
Convención sobre configuración es un sistema para seguir las ideas importantes,
construido un archivo de configuración del convenio marco (que se encuentra
ThinkPHP / convention.php), tal como se encuentran uso más común de los
parámetros de configuración por defecto. Por lo tanto,Para el archivo de
configuración de la aplicación, a menudo sólo es necesario configurar la mano o
nuevas prácticas para configurar diferentes parámetros de configuración, si se utiliza
la configuración por defecto en su totalidad, o incluso no es necesario definir
cualquier perfil.
Configuración de la aplicación
archivo de configuración de la aplicación se inicia cuando la aplicación se carga por
primera vez perfil público, por defecto se encuentra
application / config.php
.
Utilice este - 61 -
documento en
viendo las nubes
construcción de
configur
ación
configuración ampliada
cargada
público
Utilice este - 62 -
documento en
viendo las nubes
construcción de
configur
ación
cargada
Perfil de carga
Config :: load ('nombre de perfil');
Utilice este - 63 -
documento en
viendo las nubes
construcción de
configur
ación
APP_PATH archivo de configuración ubicado en el directorio como, si es
cargada
necesario cargar el archivo de configuración de la posición verdadera E, es
necesario utilizar la plena
Path, por ejemplo:
return [
Utilice este - 64 -
documento en
viendo las nubes
construcción de
configur
ación
cargada
'Los parámetros de
configuración1 '=>'Los
valores de
configuración'
]; 'Los parámetros de
configuración1 '=>'Los
valores de
configuración'
Si define el estilo Ke Ke es realmente su estilo, puede utilizar el método de análisis
// . . . más
para importar, tales como:
Configuración
Los métodos de análisis sintáctico primer argumento necesitan para pasar el nombre
de archivo completo o configuración de contenido.
Además de apoyar las ventas método parse toma el archivo de configuración, sino
también el apoyo de configuración de entrada directa, por ejemplo:
$ Config = ' V a r 1 =
val var2 = val';
Config :: parse ($ config, 'ini');
Los parámetros
de
configuración1
=Configuración
Kede los valores dede tipos de archivo XML estándar:
definiciones
los parámetros
de
configuración2
=Los valores de
configuración
Utilice este - 65 -
documento en
viendo las nubes
construcción de
configur
ación
<Config>
cargada
<Var1> val1 </ var1>
<Var2> val2 </ var2>
</ Config>
Utilice este - 66 -
documento en
viendo las nubes
construcción de
configur
ación
cargada
Utilice este - 67 -
documento en
viendo las nubes
construcción de
Tome
configur
ación
venta
Tome
configur
ación
Tome en vender los parámetros de configuración
venta
Después de ajustar los parámetros de configuración, el método puede ser utilizado
para vender quedar configurada para tomar, por ejemplo:
El sistema define una configuración ayudante, más que puede ser simplificado
como:
Utilice este - 68 -
documento en
viendo las nubes
construcción de
Configu
ración
dinámic
a
Configu
ración
dinámic
parámetros de configuración Conjunto
a
El método de usar el conjunto de parámetros de ajuste dinámico, por ejemplo:
Config :: set ([
'Los parámetros de
configuración1 '=>'Los
valores de
configuración''Los
parámetros de
configuración2 '=>'Los
valores de configuración'
]);
// O utilizar la función de ayuda
config ([
'Los parámetros de
configuración1 '=>'Los
valores de
configuración''Los
parámetros de
configuración2 '=>'Los
valores de configuración'
]);
Utilice este - 69 -
documento en
viendo las nubes
construcción de
configur
ación
indepen
diente
configuración independiente
perfil
independien
separación de soporte de perfiles (también conocida como la configuración
te
extendida), sólo es necesario configurar su perfil público
extra_config_list Parámetros (versión V5.0.1 ha abolido la redacción).
Por ejemplo, sin un archivo de configuración independiente, la información de
configuración de base de datos en config.php debe estar configurado de la siguiente
manera:
/* Propiedades de la
base * / => [
'Base de datos'
// Tipo de base => 'MySQL',
de datos
'Tipo' => '127.0.0.1',
// Dirección
del servidor => 'ThinkPHP',
'Nombre de
host' => 'Raíz',
// nombre de
la base => ''
'Base de datos'
// puerto de conexión de
baseNombre
// de datos de
usuario
'HostPort'de base => ' '
de parámetros de conexión
// datos
de base de
'Nombre de datos
'Parámetros'
usuario'
'Juego de => ['Utf8',
=> ],
base
Base de datos de
caracteres'
//
datos
// prefijo
de depor
codificación la => ''
tabla de
contraseña base de
el modo de depuración
defectoutf8
//
datos
de base de datos
'Contraseña'
], 'Prefijo'
'depuración' => f a l s o ,
'Extra_config_list' => [
'Database'],
Utilice este - 70 -
documento en
viendo las nubes
construcción de
configur
ación
/* Propiedades
indepen
de la base * /
diente
RETURn [
// Tipo de base de datos
'Tipo' => ' M y S Q L ' ,
// Dirección del servidor
Utilice este - 71 -
documento en
viendo las nubes
construcción de
configur
ación
indepen
diente
configuración extendida.
Utilice este - 73 -
documento en
viendo las nubes
construcción de
configur
ación
indepen
diente
nombre descripción
de archivo
config Aplicación o
base de configuración
archivo de del
datos módulo de archivo
configuración de base
etiquetas archivo de definición
de
de datos
comportamiento
nombre escenario Perfil
de la
escena
Si cambia CONF_PATH, a continuación, el directorio de archivos de
configuración de extensión debe ser CONF_PATH / adicional, el módulo
directorio de configuración se convierte en CONF_PATH / módulo /
configuración expandida se convierte en el módulo de directorio
CONF_PATH / módulo /
extruna .
Utilice este - 74 -
documento en
viendo las nubes
construcción de
Configurar
ámbitos
Configura
r ámbitos
alcance
Los parámetros de configuración apoyan el concepto de alcance, por defecto, todos
los parámetros están por defecto en el ámbito de los mismos sistemas. si
Los parámetros de configuración necesarios para los distintos proyectos o fases
página E aislar, a continuación, puede utilizar la función de alcance, el alcance del
papel es como una especie de espacio de nombres de parámetros de configuración.
Utilice este - 70 -
documento en
viendo las nubes
construcción de
configuració
n variable
de entorno
app_debug =
verd
adera app_trace =
verd
adero
Si su entorno de despliegue configurado las variables de entorno separado, elimine
.env perfil, para evitar conflictos.
database_username =
databa
se_passwor raízd = 123456
o el uso
[Base de datos]
username = raíz
password = 123456
Utilice este - 71 -
documento en
viendo las nubes
construcción de
configuració
n variable
de entorno
El valor de las variables de entorno se puede utilizar para obtener las dos formas
siguientes:
Utilice este - 72 -
documento en
viendo las nubes
construcción de
configuració
n variable
de entorno
return [
'Nombre de => Env :: get ( 'nombre de host',
host' '127.0.0.1'),
];
Utilice este - 73 -
documento en
viendo las nubes
construcción de
enr
uta
mie
nto
enrutamiento
contorno
Dado que se aprobó el artículo URL predeterminada ThinkPHP5.0:
Utilice este - 74 -
documento en
viendo las nubes
construcción de
enr
uta
dirigiendo
mie
parte de los módulos deben ser cerradas, algunos módulos requieren ruta
obligada), archivo necesita ser incrementado a la entrada de un módulo separado, y
nto
Utilice este - 75 -
documento en
viendo las nubes
construcción de
enr
uta
mie
nto
Utilice este - 76 -
documento en
viendo las nubes
construcción de
modo
de
enrutam
iento
modo de enrutamiento
, El modo Normal
Cerrada la vía en su totalidad mediante la URL modo por defecto PATH_INFO:
// Con el fin de
resolver la variable => 1,
'Url_param_type'
Utilice este - 77 -
documento en
viendo las nubes
construcción de
modo
de
La forma a continuación, sólo tiene que acceder a la dirección se define reglas de
enrutam
enrutamiento tienen que definir las reglas de enrutamiento, Fax E fotos fijas de las
iento
especies encontradas
El modo normal de PATH_INFO URL de acceso de modo.
Utilice este - 78 -
documento en
viendo las nubes
construcción de
modo
de
enrutam
iento
De este modo, la siguiente debe abordar el acceso a cada Yan Ke definir reglas de
enrutamiento (prospecto de casa), de lo contrario se producirá una excepción.
Utilice este - 79 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta
La definición de ruta
registro dinámico
La definición de ruta utilizando \ método de la regla piense \ registro de la clase
ruta, por lo general en el archivo de configuración de la aplicación de
enrutamiento
application / route.php registro, fórmula Ke es:
nosotrose p e n s a r \ Ru t a ;
// ruta de registro paraíndicemódulonoticiascontroladoresleeroperativo
Ruta :: regla ( 'nuevo /: id', 'index / Noticias / leer');
Se visita:
Utilice este - 81 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta
También podemos registrar las reglas de enrutamiento por lotes, tales como:
Ruta :: regla ([ 'nuevo /: id' => 'Noticias / leer', 'blog /: nombre' => 'Blog /
detalle']); Ruta :: get ([ 'nuevo /: id' => 'Noticias / leer', 'blog /: nombre' =>
'Blog / detalle']); Ruta :: post ([ 'nuevo /: id' => 'Noticias / actualización',
'blog /: nombre' => 'Blog / detalle']);
Utilice este - 83 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta
expresión de enrutamiento
Ruta define sistema de expresión de cadena de caracteres, utilizando las reglas de
manera definida.
definición de la ruta regular ha sido abolida, cambió las reglas definidas por la
realización de una variable.
Las expresiones regulares
Las expresiones regulares mano comprenden normalmente la dirección estática de
direcciones dinámica, o una combinación de dos tipos de direcciones, por ejemplo los
siguientes son todos efectivos de regulación
expresiones:
definiciones opcionales
Apoyo para la definición opcional de parámetros de ruta, tales como:
Utilice este - 84 -
documento en
viendo las nubes
construcción de
La
definició
[: Mes] variables de [] indica que la variable contiene hasta después de
n de
emparejar variable
ruta de encaminamiento opcional.
http: //serverName/index.php/blog/2015
http:
//serverName/index.php/blog/2015/12
Con el caso de las variables opcionales definidos antes para definir dos o más reglas
de encaminamiento para ser procesados se pueden combinar en una
Las reglas de enrutamiento.
Utilice este - 85 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta
La concordancia exacta
se detecta reglas partido sólo cuando el partido desde el principio de la URL, siempre
y cuando la dirección URL contiene la definición de reglas de enrutamiento coincidirá
Con el éxito, si desea una coincidencia exacta, que finalmente puede usar el símbolo
$ en las expresiones de ruta, como:
http: //serverName/index.php/new/info
http: //serverName/index.php/new/info/2
Si se adopta
Definir, a continuación, la URL para acceder a los dos enfoques se hacen coincidir con
éxito.
parámetros adicionales
Utilice este - 80 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta
Utilice este - 81 -
documento en
viendo las nubes
construcción de
registro
a granel
registro a granel
registro a granel
Si no desea que todos ellos registrado, puede utilizar el registro a granel, las reglas
son las siguientes:
Ruta :: regla ([
'Nuevo /: id' => 'Noticias / leer',
'Blog /: id' = > [ 'Blog / actualización', [ 'ext' => 'shtml'], [ 'id' => '\ d 4}']],
...
], '', 'GET', [ 'ext' => 'html'], [ 'id' => '\ d +']);
Regístrate anterior ruta, el último blog /: id sólo solicitar el acceso para que coincida
con el sufijo SHTML variable de identificación regla es
\ D 4} .
Utilice este - 82 -
documento en
viendo las nubes
construcción de
registro
a granel
el registro a granel.
// registro a
granelGETenrutamie
nto
'Nuevo /: => 'Noticias / leer',
Ruta id'
:: get ([
=> [ 'Blog / editar', [], [ 'id' => '\ d +']]
'Blog /: id'
]); ...
// El mismo
efecto que
Ruta :: regla ([ => 'Noticias / leer',
'Nuevo /: => [ 'Blog / editar', [], [ 'id' => '\ d +']]
id' 'blog /:
id'
...
Utilice este - 83 -
documento en
viendo las nubes
construcción de
registro
a granel
], '', 'GET');
return [
'Nuevo /: id' => ' N o t i c i a s / l e e r ' ,
'Blog /: id' => [ ' B l o g / a c t u a l i z a c i ó n ' , m é t o d o [ ' ' = > ' P o s t I p u t ' ] , [
'Id' => '\ D
+ ']],
];
nosotrose p e n s a r \ Ru t a ; R u t a : : r e g l a ( ' h o l a
Utilice este - 85 -
documento en
viendo las nubes
construcción de
registro
a granel
Utilice este - 86 -
documento en
viendo las nubes
construcción de
reglas
variable
s
reglas
variable
sreglas variables
ThinkPHP5.0 apoyo a las variables en las reglas de enrutamiento especificados reglas
variables con forma regular, constituyen las variables dinámicas no pueden limitar
tipos específicos del sistema de problemas, y es compatible con las reglas globales.
Se utiliza de la siguiente manera:
Si las variables se definen de forma simultánea normas locales reglas mano mundial,
las reglas locales cubrirán la definición de las variables globales.
Utilice este - 87 -
documento en
viendo las nubes
construcción de
Una
combin
ación de
variable
s
Una
combin
ación
Si deespeciales de encaminamiento, se puede utilizar una combinación de
tiene reglas
variable
variables en el tendido definición.
sPor ejemplo:
Ruta :: get ( 'Item- <nombre> - <id>', 'producto / detalle', [], [ 'nombre' => '\ w +',
'id' => '\ d +']);
Ruta :: get ( 'elemento <nombre> <id>', 'producto / detalle', [], [ 'nombre' => '[a-zA-Z] +',
'id'
=> '\ D +']);
Ruta :: get ( 'artículo @ <nombre> - <id>', 'producto / detalle', [], [ 'nombre' => '\ w
+', 'id' => '\ d +']);
Ruta :: get ( 'Item- <nombre> <id?>', 'Producto / detalle', [], [ 'nombre' => '[a-zA-Z] +',
'i D' => ' \ d + ']);
Utilice este - 88 -
documento en
viendo las nubes
construcción de
parámet
ros de
ruta
parámetros de ruta
parámetros de ruta
Se refiere a un parámetro de enrutamiento pueden proporcionarse condiciones tales
que los parámetros de la ruta a juego, que se utiliza para validar la regla de
encaminamiento actual es válido,
El principal prospecto:
parámetros explicación
método detección de tipo de solicitud,
ext soporta
URL una pluralidad
de detección de tipos
de sufijo, de
apoyan
peticiones
más
negar ext sufijosufijos coinciden
URL está prohibido detección,
https apoyan
Detectarmás sufijos
si las coinciden
solicitudes HTTPS
dominio la detección de dominio
antes de la comportamiento frontal (detección)
conducta
después de la el comportamiento posterior
conducta de
devolución (ejecución)
Método de prueba personalizada
llamada
fusionar VARs Combinar parámetros adicionales
adicional
modelo se unen modelo de unión ( V5.0.1 + )
cache Solicitud de caché ( V5.0.1 + )
DEPR parámetro parámetros Separador de
Ajax enrutamiento
detección AJax( (V5.0.2
V5.0.2 ++ ))
pJax detección PJax ( V5.0.2 + )
tipo de solicitud
Si se especifica el tipo de solicitudes de registro de enrutamiento, solicitar
parámetro de tipo sin establecer método. Si una regla o
El método de cualquier ruta registrada, la ruta utilizando el archivo de
Utilice este - 89 -
documento en
viendo las nubes
construcción de
parámet
ros de
definición
ruta
de configuración, o puede ser utilizado método de detección de
parámetros de tipo de solicitud solo.
Modo de empleo:
Utilice este - 90 -
documento en
viendo las nubes
construcción de
parámet
ros de
ruta
sufijo de URL
// definicionesGETnormas solicitud de enrutamiento y establecerURLsufijohtmlcuando efectiva
Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'ext' => 'html']);
la detección de dominio
El apoyo a nombre de dominio completo o subdominio para la prueba, por ejemplo:
la inspección de HTTPS
Soporte detectar si el actual acceso HTTPS
Utilice este - 92 -
documento en
viendo las nubes
construcción de
parámet
ros de
ruta
Ruta :: get ( 'usuario /: id', 'index / usuario / leer', [ 'before_behavior' => '\
app \ index \ b ehavior \ UserCheck']);
namespace a p l i c a c i ón \ i n d e x
\ comportamiento; class
UserCheck
Public f u n c i o n r u n ()
Ruta :: get ( 'usuario /: id', 'Usuario / leer', [ 'after_behavior' => '\ app \ index \
comportamiento
\ ReadInfo ']);
namespace a p l i c a c i ón \ i n d e x
\ comportamiento; nosotrose
a p l i c a c i ón \ i n d e x \ m o d e l o \
Utilice este - 93 -
documento en
viendo las nubes
construcción de
parámet
ros de
Cambio.
ruta
Utilice este - 94 -
documento en
viendo las nubes
construcción de
parámet
ros de
ruta
return [
'Blog /: id' => [ ' B l o g / a c t u a l i z a c i ó n ' , m é t o d o [ ' ' = > ' P o s t ' , ' e x t ' = >
'htmlIshtml
']],
];
Utilice este - 90 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento
dirección de enrutamiento
Utilice este - 92 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento
namespace a p p \ i n d ex \ c o n t r o l a d o r ;
class B l o g
Public f u n c i o n l e e r ( i d $ )
RETURn 'Lea:' $ id ;.
}
}
namespace a p p \ i n d ex \ c o n t r o l a d o r \
Utilice este - 94 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento
De esta manera, parece como una especie de primera mano, la diferencia entre la
naturaleza del método de aplicación directa es una clase de controlador sin
Necesidad de analizar módulo / controlador / estas operaciones, sino que
además no se puede inicializar el módulo. Por ejemplo, la definición de las
siguientes vías:
Directorio \ app \ index \ Controlador \ método de clase blog es equivalente a llamar leer
directamente.
namespace a p p \ i n d ex \
Típicamente esta manera el siguiente, ya que el nombre del módulo actual no está
definido, el controlador de corriente del nombre actual método de mano, lo que
lleva a la vista
Utilice este - 95 -
documento en
viendo las nubes
construcción de
direcció
n de
Las reglas de la plantilla por defecto
enrutam
fallan, por lo que el siguiente este caso, si la
prestación plantilla de vista, se debe
iento pasar parámetros claros.
Utilice este - 96 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento
O (método estático)
V5.0.4 + versión, soporte para parámetros adicionales pasado como argumento para
invocar un método (por enlace de parámetros), tales como:
'? \ App \ index \ servicio \ Blog :: leer el estado = 1': 'Blog / id' =>,
mano
Aunque hay enrutamiento Ll misma dirección, pero el primero utiliza una forma
redireccionamiento 301 para saltar de la ruta, de esta manera buena
En la URL o casual (prospecto se puede pasar más parámetros no estándar dentro de
Utilice este - 97 -
documento en
viendo las nubes
construcción de
direcció
n de
la fórmula Ke URL), pero este último Soporte Módulo dirección
enrutam
de operación con
una mano. Por ejemplo, si deseamos avatar / 123 redirigir Ll
iento
Utilice este - 98 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento
Redirigir Ll utilizando un URL dirección externa es a menudo muy útil para el proceso
de migración después de la revisión de la página, por ejemplo:
Utilice este - 99 -
documento en
viendo las nubes
construcción de
recursos
de
enrutam
iento
recursos de enrutamiento
recursos de enrutamiento
5.0 apoyo reparador petición de encaminamiento de los recursos de ajuste,
como sigue:
return [
// recursos de enrutamiento definidos
' resto '=> [
// puntosíndicemóduloBlogcontrolador
'Blog' => 'index / blog',
],
// La definición de ruta común
'Hola /: id' => 'index / hola',
]
namespace a p p \ i n d ex \
cclass
o n t r o lB al do og r ;
públic función index ()
o
}
públic función leer ($ id)
o
}
públic función edición ($
o id)
} }
Ruta :: recursos ( 'blog', 'Índice / blog', [ 'var' => [ 'blog' => 'blog_id']]);
namespace a p p \ i n d ex \
cclass
o n t r o lB al do og r ;
públic función index ()
o
}
públic función leer ($ blog_id)
o
}
públic función edición ($
o blog_id)
} }
Ruta :: resto
([ => [ 'Post', ' ' , ' T i e n d a ' ],
actualizac => [ 'PUT', ' / : I d ' , ' G u a rd a r ' ] ,
ión => [ 'Borrar', ' / : I d ' , ' De s t o r y ' ] ,
'Guardar'
''
'eliminar'
]);
Recursos anidados
Es compatible con los recursos anidados para el encaminamiento, por ejemplo:
namespace a p p \ i n d ex \
controlador; class comentario
Public f u n c i o n e d i c ió n ( $ i d , $ b l o g _ i d )
}
}
namespace a p p \ i n d ex \
}
}
namespace a p p \ i n d ex \
controlador;
class
usuario función getInfo ()
públic
o
}
públic función getPhone ()
o
}
públic función PostInfo ()
o
}
públic función putInfo ()
o
}
públic función deleteInfo ()
o
} }
alias de enrutamiento
Por ejemplo, queremos utilizar todas las operaciones de usuario puede acceder al
controlador del módulo de índice de usuario, puede utilizar:
return [
' alias ' = > [
' U s u a r i o '=> 'Índice /
], usuario,
];
controlador de acceso del usuario puede entonces operar a través de una dirección
URL directa, por ejemplo:
http: //serverName/index.php/user/add
HTTP:
//serverName/index.php/user/edit/id/5
http:
//serverName/index.php/user/read/id/5
Si el modo de unión con el parámetro URL de unión por el orden de las páginas
de búsqueda, el progreso se puede simplificar la dirección URL, una solicitud de
referencia -> Método
enlace de parámetros.
return [
' alias ' = > [
' U s u a r i o '=> [ 'Índice / user', [ 'ext' =>
], 'html']],
];
enrutamiento de paquetes
enrutamiento de paquetes
función de enrutamiento de paquetes permite las mismas definiciones combinadas
de enrutamiento de paquetes de prefijo, que pueden mejorar la eficiencia de la ruta
coincidente, no necesariamente por
Todas las horas para atravesar las reglas de enrutamiento
'Blog /: id' => [ ' B l o g / l e e r ' , [ ' M é t o d o ' = > ' G e t ' ] , [ ' I d ' = > ' \ D
+']], 'blog /: nombre' => [ 'Blog / leer', [ 'Método' => 'Post']],
'[Blog]' => [
': Id' => [ ' B l o g / l e e r ' , [ ' M é t o d o ' = > ' G e t ' ] , [ ' I d ' = > ' \ D
+']], ': nombre' => [ 'Blog / leer', [ 'Método' => 'Post']],
],
grupo clase de ruta se puede usar para registrar un método, como sigue:
Aunque sólo sea para establecer algunos parámetros para alguna ruta común
reglas de enrutamiento, puede utilizar:
ruta SRTA
return [
'Nuevo /: => 'Noticias / leer',
id' 'blog => [ 'Blog / actualización', método ['' = > ' P os t I p u t ' ] , [
/: id' 'Id' => '\ D +
']], => 'Público /
' Miss',
señorita
'
];
O utilice el método para registrar la señorita de enrutamiento
return [
'[Blog]' = > [
'Editar /: id' => [ ' M é t o d o ' B l o g / e d i t a r ' , [ ' = > ' G e t ' ] , [ ' I d ' = >
'\ D +']]
,
': Id' => [ M é t o d o ' B l o g / l e e r ' , [ ' ' = > ' G e t ' ] , [ ' I d ' = > ' \ D
+']]
,
' señorita ' => ' B l o g / M i s s ' ,
],
'Nuevo /: id' => ' N o t i c i a s / l e e r ' ,
' señorita ' => ' P ú b l i c o / M i s s ' ,
];
Si se utiliza el método para registrar grupo de enrutamiento, puede utilizar las
siguientes maneras:
Soporte
para
cierres
cierre definido
Podemos utilizar la definición de cada uno de los cierres de enrutamiento
necesidades especiales, sin la necesidad de realizar el método de funcionamiento del
controlador, por ejemplo,
Tales como:
el paso de parámetros
Cuando el cierre definido parámetro apoyo que pasa, por ejemplo:
Hola, ThinkPHP
Enlazar enrutamiento
// La unión actualURLpara
índicemódulo Ruta :: bind (
'index');
// La unión actualURLpara
índicemóduloBlogcontrolador Ruta ::
bind ( 'índice / blog');
// La unión actualURLpara
índicemóduloBlogcontroladoresleeroperativo Ruta
La::
forma
bind /(controlador / acción
'índice / blog para el módulo de enrutamiento eficaz Ll, Ll si nos
/ leer');
Se puede simplificarse
Si define el enrutamiento
http: // ServerName / 5
La unión de clase Ll
La URL actual Ll une directamente a una determinada categoría, por ejemplo:
constante Definido
Sólo tiene que añadir el archivo de entrada constante BIND_MODULE, un archivo en
el módulo de entrada de corriente designada Ll unión o de control
, Por ejemplo:
Si los archivos están entrada correspondiente al nombre del módulo actual, se puede
utilizar un archivo de entrada sólo las funciones del módulo automáticamente
vinculante
Tenemos que añadir en el archivo de configuración de la aplicación:
modelo de unión
Los cierres pueden ser utilizados para devolver el objeto modelo de datos
enrutamiento de dominio
registro dinámico
Registro de nombres de dominio se pueden implementar de forma dinámica en la
aplicación de las reglas de documentos públicos o archivos de configuración, por
ejemplo:
// el originalURLacceso
http://www.thinkphp.cn/blog/article/read/id/5
// con destino aBlogacceso subdominio
http://blog.thinkphp.cn/article/read/id/5
// el originalURLacceso
http://www.thinkphp.cn/index/blog/read/id/5
// con destino aBlogacceso subdominio
http://blog.thinkphp.cn/read/id/5
Pan-despliegue de dominio
Puede apoyar el despliegue de reglas pan-dominio, tales como:
http://hello.thinkphp.cn
http://quickstart.thinkphp.cn
http://hello.user.thinkphp.cn
return [
' dominio '=> [
'Blog' => ' B l o g ' ,
// normas pan-dominio recomiendan en la definición final
'* .user' => 'Usuario',
'*' => ' L i b r o ' ,
],
// Aquí está la definición de reglas de enrutamiento
]
La unión de clase Ll
// b l o gSubdominios se unen a la clase Ruta :: dominio (
'blog', '@ \ app \ Blog \ Controlador \ artículo');
return [
' dominio '=> ['
Blog' => [
// reglas de enrutamiento dinámico para el registro de nombres de dominio
': Id' = > [ ' B l o g / l e e r ' , [ ' m é t o d o ' = > ' G E T ' ] , [ ' i d '
=> '\ d +']], ': nombre' => 'blog / leer',
],
],
// Los siguientes son otros reglas de enrutamiento definen
]
la generación de URL
edición actualizaciones
5.0.10 adición app_host La generación de los parámetros de configuración
para configurar
adición la dirección
https_agent_name URLnombre
https actual de
dela raíz
identificación de los ajustes
de los parámetros de configuración actual o corredor de CDN
la \ Piense \ Url :: La función de método o uso url ayudante
generación build () proporcionada por el sistema (), los
de URL parámetros
usando
a:
// generaríndicemódulo Blogcontroladoresleeroperativo
URLdirección de acceso Url :: acumulación ( 'índice /
blog / leer', 'id = 5 & name = ThinkPHP');
// Use la función de ayuda
url ( 'index / blog / leer', 'id = 5 & name = ThinkPHP');
/index.php/blog/5/name/thinkphp.html
/blog/5/name/thinkphp.html
Si configura:
/index.php/blog/5.html?name=thinkphp
// generaríndicemódulo
Blogcontroladoresleerhablarhacer URLdirección de
acceso Url :: acumulación ( '@ índice / blog /
leer', 'id = 5');
// Use la función de ayuda
url ( '@ índice / blog / leer', 'id = 5');
A continuación, los cambios de dirección URL generadas automáticamente a:
/index.php/blog/5.html
manera:
// generaríndicemódulo
Blogcontroladoresleerhablarhacer URLdirección de
acceso Url :: acumulación (El Blog de id = 5? ');
url (el blog de id = 5? ');
/index.php/blog/5.html
Usted puede utilizar el siguiente uso directo de enrutamiento reglas para generar la
dirección URL:
/index.php/blog/5.html
sufijo de URL
Por defecto, el sistema considerará url_html_suffix vender como parámetros de
configuración URL sufijo (el valor predeterminado es
html), si establecemos:
/index.php/blog/5.shtml
Se llevará el primer sufijo para generar la dirección URL o dirección URL generada
automáticamente:
/index.php/blog/5.html
siguiente:
http://blog.thinkphp.cn/read/id/5.shtml
http://blog.thinkphp.cn/read/id/5.shtml
generación de anclaje
Apoyar la generación del anclaje de la dirección URL se puede utilizar directamente
en el parámetro URL:
http://blog.thinkphp.cn/read/id/5.html#anchor
U ocultar index.php:
contr
olado
r define Controlador
La operación
de pre
controlador
Jump mano
inicialización
No
controlador
de operación
de redirección
de multinivel
jerárquica
Controller
Controller
Controller
Rest
Posicionamiento
automático
Controlador de
Recursos
controlador
define Controlador
ThinkPHP controlador V5.0 define más flexible, puede no necesitar para heredar
cualquiera de la clase base pueden heredar el paquete oficial \ pensar \ clase
controlador o realmente su clase controlador.
define Controlador
clase controlador típica se define como sigue:
namespace a p p \ i n d ex \
c o n t r o l a d o r ; c l a s s ín d i c e
Public f u n c i o n i n d e x ( )
namespace a p l i c a c i ón \ i n d e x \ c o n t r o l a d o r ;
Índice de clases
Public f u n c i o n i n d e x ( )
namespace app \ de
clase controlador index \ controlador;
modo, si usted quiere hacer una plantilla en
Índice de clases
Public f u n c i o n i n d e x ( )
$ View = N e b r a s k aw Ve r ( ) ;
return $ V e r - > f e t c h ( ' i n d e x ' ) ;
}
Índice de clases
Public f u n c i o n i n d e x ( )
Public f u n c i o n i n d e x ( )
## render Output
Por defecto, la salida del controlador en todos, Volver,Así, sin ningún movimiento de la
producción, el sistema hará que automáticamente el contenido de la salida.
Índice de clases
Public f u n c i o n h e l l o ( )
Public f u n c i o n j s o n ( )
return j s o n _ e n c o d e ($ d a t a ) ;
}
Public f u n c i o n r e a d ( )
return V e r ( ) ;
}
Índice de clases
Public f u n c i o n h e l l o ( )
Public f u n c i o n d a t o s ( )
Se visita
http: //localhost/index.php/index/Index/hello
http: //localhost/index.php/index/Index/data
La salida de
resultados se
convierte en:
"Hola, mundo!"
"Nombre":" ThinkPHP "" status ": 1
namespace
controladorapp \ index \ controlador;
Índice de clases
Public f u n c i o n d a t o s ( )
Se visita
http: //localhost/index.php/index/Index/data
La salida de
resultados se
convierte en:
"Nombre":" ThinkPHP "" status ": 1
inicio de la controladora
namespace a p l i c a c i ón \ i n d e x \
Controller;
class i n d e x a m p l i a r s c o n t r o l a d o r
Public f u n c i o n _ i n i ti a l i z e ( )
Public f u n c i o n h e l l o ( )
Public f u n c i o n d a t o s ( )
salida
init
¡Hola
Si el acceso
http: //localhost/index.php/index/Index/data es la
salida
init
dato
s
Antes de la Operación
nosotrose p e n s a r \ Co n t r o l l e r ;
class i n d e x a m p l i a r s c o n t r o l a d o r
protected $ B e f o r e A ct i o n L i s t =
['Segundo'
'Primera', [ 'Excepto' => 'hola'],
=> => [ 'Sólo' => 'hola, los
]; 'Tres' datos'],
protected f u n c i o n p ri m e r a
()
echo ' E n p r i m e r l u g ar
<br/>';
}
protected f u n c i o n s eg u n d o s
()
echo ' E n s e g u n d o l u ga r
<br/>';
}
protected f u n c i o n t re s ( )
Public f u n c i o n h e l l o ( )
Public f u n c i o n d a t o s
()
acceso
http: //localhost/index.php/index/Index/hello
prime
ro
hola
tres
acceso
http: //localhost/index.php/index/Index/data
La salida es:
primer
o
segund
os
datos
de
tres
páginas de salto
En el desarrollo de aplicaciones, a menudo se encuentran algunos de salto de página
Ll con un mensaje, tales como el éxito de la operación o la página de error
operacional
Cara, y saltar automáticamente Ll otra página del objetivo. \ Piense sistema de
clases \ Controlador construido dos errores mano del éxito del método de salto,
una página Jumplines.
namespace a p p \ i n d ex \
controlador;
nosotrose p e n s a r \ Co n t r o l l e r ;
nosotrose a p p \ i n d ex \ m o d e l o
\ U s u a ir ni do e; x s e
class controlado
extiende r
index ()
Public f u n c i ón
usuario;
$
$ usor
Result = = $ U s u a r i o- > G u a r d a r ( $ d a t a ) ;
/ /instanciaciónusuarioo
n u e($
si v o resultado)
//Despuésbjetos
de configurar la dirección de la página de salto con éxito, el valor
predeterminado es volver a la página$ _SERVER [ 'HTTP_REFERER']
$ This-> éxito ('nuevo éxito', ' U s u a r i o / l is t a ' ) ;
} else
//La página de salto de página de error por defecto es volver a la página
anterior, por lo general no es necesario establecer
} $ This-> error ('Añadir fallado');
} }
variable significado
$ datos Los datos que se
$ Msg devuelven
mensaje de la página
$ código devuelto
Código
$ Saltar tiempo de
Espera
$ Url espera ende
dirección segundos
la página
de salto
//redirigida anoticiasmóduloCatyoperativo
$ This-> redirect ( 'Noticias / categoría', [ ' C a t e _ i d ' = > 2 ] ) ;
ninguna operación
Sólo tenemos que dar clase City controlador define un método _empty (sin
servicio):
<? Php
namespace a p p \ i n d ex \ c o n t r o l a d o r ;
class c i u d a d
Public f u n c i o n _ e m p ty ( $ n a m e )
Ciudad actual:
Beijing Ciudad
actual: Shanghai
Ciudad actual:
Shenzhen
controlador aéreo
convertirse en
nosotrose p e n s a r \
Solicitud; class
error
Public f u n c i o n í n d i ce ( R e q u e s t S o l i c i t u d $ )
//Es de acuerdo con el nombre actual del controlador para determinar la acción a
realizar en esa ciudad
$ CityName = $ R e q u es t - >
controlador (); RETURn $ This->
ciudad ($ cityName);
}
Ciudad actual:
Beijing Ciudad
actual: Shanghai
Ciudad actual:
Shenzhen
controlador de operación de manos libres vacío también se puede utilizar al mismo
tiempo, las operaciones más complejas para completar.
// Cambiar el nombre
del controlador por => ' M y E r r o r ' ,
defecto en blanco
'Empty_controller'
namespace a p l i c a c i ón \ i n d e x \
\ Controller;
class B l o g a m p l i a r s c o n t r o l a d o r
Public f u n c i o n i n d e x ( )
return $ T h i s - > f e t ch ( ) ;
}
Public f u n c i o n a d d ()
return $ T h i s - > f e t ch ( ) ;
}
Public f u n c i o n e d i c ió n ( $ i d )
return $ T h i s - > f e t ch ( ) ;
}
}
La posición del archivo de clase de controlador es:
http: //serverName/index.php/index/one.blog/index
controlador Hierarchical
controlador de acceso
ThinkPHPs el concepto de un control jerárquico por el controlador para el
controlador de acceso URL de acceso capa (Controller)
O el controlador maestro, controlador de acceso es responsable \ pensar \ clase de
aplicación llame a la mano instanciado, sin tener que crear una instancia de forma
manual.
Después de dirigir la mano URL análisis, será el actual resolución de direcciones URL Ll
[módulo / controlador / acción], es decir, la aplicación de una verdadera Un método de
operación de la clase del controlador, el siguiente es un ejemplo:
namespace a p p \ i n d ex \
Public f u n c i o n i n d e x ( )
Public f u n c i o n a d d ()
Public f u n c i o n e d i c ió n ( $ i d )
controlador Hierarchical
URL, además de control de acceso, también podemos definir su verdadera clase
controlador jerárquico, estos no son controlador jerárquico puede ser visitado
Le pregunté a un llamado directo Ll, sólo puede ser llamado en el controlador de
acceso, clase modelo interno, o ver el archivo de plantilla. Por ejemplo, definimos
namespace a p l i c a c i ón \
Public f u n c i o n i n s e rt a r ( )
Public f u n c i o n a c t u al i z a c i ó n ( $ i d )
Public f u n c i o n e l i m in a r ( $ i d )
Una vez definido, se puede crear una instancia y llamar al método de la siguiente
manera:
Incluso $t = \ P i e n se \ c a r g a d o r : : c o n t r o l a d o r (
'Blog', 'Evento'); echo $ Evento-> actualización
( 5 ) ; / / exportación actualización: 5
echo $ E v e n t o - > d e l et e ( 5 ) ; / / exportación Eliminar: 5
namespace a p l i c a c i ón \
Blog
Public f u n c i o n h e a d er ( )
Public f u n c i o n i z q u ie r d a ( )
Public f u n c i o n m e n ú ( $ n a m e )
controlador de descanso
controlador de descanso
Resto del nuevo controlador ya no se recomienda se recomienda usar las
generaciones musgo controlador de recursos. La próxima versión principal está a
Si usted
puntonecesita para que su controlador es compatible con REST, se puede utilizar
de ser desechada.
el controlador, controlador de acceso Resto recta en la definición de las veces
Entonces heredar pensar \ Controlador \ Rest. Por ejemplo:
namespace a p l i c a c i ón \ i n d e x \
Controlador \ Resto;
class B l o g a m p l i a r s r e s t o
}
Con ejemplos de necesidad, primero agregamos en el archivo de configuración de la
aplicación:
// U R Lsufijo
pseudo-estática => ' H t m l I x m l I j s o n I j s o n p ' ,
'Url_html_suffix'
namespace a p l i c a c i ón \ i n d e x \
Controlador \ Resto;
class B l o g a m p l i a r s r e s t o
Public f u n c i o n r e s t o ( )
switch ( $ T h i s - > m é to d o )
case ' G e t ' : / / g etcódigo de procesamiento de solicitudes
yoF ( $ T h i s - > t i pe == ' H t m l ' )
} elseiF ($ This-> tipe == 'XML')
}
romper;
case ' E s c r i b e ' : / / pu tcódigo
de procesamiento de
solicitudes romper;
case ' P o s t ' : / / P O Stcódigo de
procesamiento de solicitudes
} romper;
} }
reparador de salida
respuesta Rest usando el método proporcionado por la clase
$ This-> respuesta (datos $, ' J S O N ' , 2 0 0 ) ;
$ Los datos son los datos que se emitirá, el segundo parámetro es los códigos de
estado HTTP de datos de salida
Un método de transmisión de datos de forma automática $ código de tipo de datos, en el
prospecto es compatible con la actual XML, JSON, jsonp, codificación HTML Verified
similares De salida, por ejemplo:
namespace a p p \ i n d ex \
controlador;
nosotrose p e n s a r \ Co n t r o l a d o r
\ Rclass
esto; ampliars
informació resto
n
funcion r e a d _ g e t _ x m l ( $
id)
público
// exportaciónidentificaciónes1
deinformacióndeXMLdatos
}
funcion r e a d _ x m l ( $
id)
público exportaciónidentificaci
ónes1deinformacióndeXMLdatos
//
funcion r e a d _ j s o n ( $
}público i d )
exportaciónidentificació
// nes1deinformacióndeJSON
} } datos
http: //serverName/index/info/read/id/1.xml
controlador
de
posicionamien
Si está utilizando un controlador multi-nivel, puede configurar los parámetros
to automáticoabrir el controlador de posicionamiento automático de
controller_auto_search
URL de acceso fácil, por ejemplo, agregar primero el archivo de configuración:
'Controller_auto_search' = > v e r d a d e r a ,
namespace a p l i c a c i ón \ i n d e x \
\ Controller;
class B l o g a m p l i a r s c o n t r o l a d o r
Public f u n c i o n i n d e x ( )
return $ T h i s - > f e t ch ( ) ;
}
Public f u n c i o n a d d ()
return $ T h i s - > f e t ch ( ) ;
}
Public f u n c i o n e d i c ió n ( $ i d )
http: //serverName/index.php/index/one/Blog
controlad
or de
recursos
Controlador de recursos le permite crear fácilmente controlador de recursos
reparador, a través de la línea de comandos para generar los recursos necesarios
para el control
Sistema de, por ejemplo:
// generaríndicemóduloBlogcontrolador de recursos
php d e l g a d ok h a c e r : c o n t r o l l e r Ín d i c e / B l o g
php d e l g a d ok h a c e r : c o n t r o l l e r a p l i c a c i ó n \ i n d e x \ C o n t r o l a d o r \ B l o g
Entonces sólo tiene que registrar un controlador de recursos para rutas de recursos:
soli
citu
d solicitud de información
de entrada
variable
solicitud de
cambio
variable de
tipo
enmascarami
ento
información
de
encabezado
de solicitud
HTTP el
método de
pseudo-
estática de
parámetro de
propiedad de
inyección de
inyección de
solicitud de
inyección de
dependencia
caché de
vinculación
solicitud de información
$ Request = S o l i c i t ud : : e j e m p l o ( ) ;
$ Request = s o l i c i t ud ( ) ;
Por ejemplo:
expediente: / i n d e x . ph p
url: / i n d e x / i n d e x / h el l o . h t m l ? n a m e = t h i n k p h p
url i n g e n i oh d o m i n i o:
http://tp5.com/index/index/hello.html?name=thinkphp url w i t ho u t
pregunta: /index/index/hello.html
root:
Root ingenioh dominio:
http://tp5.com pathinfo: ín d i c e
/ index / hello.html pathinfo :
ín d i c e / i n d e x / h o l a
ext: h t m l
Set / módulo de adquisición / controlador / nombre de la acción
$ Request = S o l i c i t ud : : e j e m p l o ( ) ;
echo "El nombre del módulo actual es" . $ R e q u e s t - > m ó d u l o ( ) ;
echo "El nombre del regulador de intensidad es" . $
R e q u e s t - > c o n t r o l a d o r ( ) ; e c h o "Es el nombre de la
operación actual" . $ R e q u e s t - > a c c i ó n ( ) ;
método de la
petición:GET Tipo de
recurso:html
accesoipdirección:127.
0.0.1
siAjaxsolicitud:falso
parámetros de la
petición:
array ( T a m a ñ o = 2 )
'Test' = > s t r i n g ' d dd ' ( L o n g i t u d = 3 )
'nombre' => string 'ThinkPHP'
(Longitud = 8)
Parámetros de la
petición: incluye
solamentenombre
del array ( T a m a ñ o
= 1)
La obtención de información de la programación de la
'Nombre' = > s t r i n g 'T h i n k P H P ' ( L o n g i t u d = 8 )
mano dedeenrutamiento
parámetros la
petición: Solución
hola
de método modificado como sigue:
problemasnombre
del array
$
( T Request
amaño = = 1 ) S o l i c i t ud : :
eje l o ( ) ' d dd ' ( L o nde
'Test' = >; setcrhion g'información
m p gitud = 3)
enrutamiento:';
dump ($ request-> ruta ()); echo
'La información de citas:'; Dump
($ request-> dispatch ());
return [
'Hola /: nombre' = > [ ' Í n d i c e / h o l a ' , [ ] , [ ' n o m b r e ' = > ' \ w + ' ] ] ,
];
La salida es:
'Opción' = >
array ( T a m a ñ o
= 0) vacía
La información de citas:
array ( T a m a ñ o = 2 )
'Tipo' = > s t r i n g ' M ód u l o ' ( L o n g i t u d
= 6) 'módulo' =>
array ( T a m a ñ o = 3 )
0 => nulo
1 => string 'Índice' (Longitud = 5)
2 => string 'Hola' (Longitud = 5)
$ Request = S o l i c i t ud : : e j e m p l o ( ) ;
$ Request-> raíz ( 'index.php');
$ Request-> pathinfo ( 'index / índice / hola');
contorno
la detección de peticiones de objetos se puede hacer mediante variables de
entrada globales, obtener el filtrado de seguridad manos, paquete de apoyo
insertar $ _GET,
$ _POST, $ _REQUEST, $ _SERVER, $ _SESSION, _COOKIE $, $ _ENV y otras
variables del sistema, y la información de carga de archivos.
input ( 'get.id?');
input ( 'post.name?');
el apoyo de detección de variable puede apoyar todas las variables del sistema.
obtener la variable
Variables adquirida utilizando \ piensan un método de clase \ Solicitud y
parámetros:
método descripción
PARAM Obtiene petición de corriente
obtener variable $ obtener la variable
Obtiene
puesto Obtiene variable $ POSTAL
poner PONER obtener las variables
input ( 'param.name');
input ( 'PARAM.');
o de entrada (
'nombre'); input
( '');
input ( 'get.id');
input ( 'get.name');
input (
'conseguir.');
input ( 'post.name');
de entrada (
'post.');
input ( 'put.name');
input ( 'puso.');
input ( 'request.id');
input ( 'solicitud.');
input ( 'server.PHP_SELF');
input ( 'servidor.');
de entrada (
'session.user_id'); input (
'sesión.');
input ( 'cookie.user_id');
input ( 'cookie.');
filtro
variable
El marco defecto no establece ningún reglas de filtrado, puede establecer las
reglas globales de filtrado de archivos de configuración:
// Por defecto método de filtrado mundial Una pluralidad de separados por comas
'Default_filter' => ' H t m l s p e c i a l c h a r s ' ,
Marco FilterID hacer la conversión de apoyo, por lo que la forma en que las cadenas
se puede utilizar, por ejemplo:
Cabe señalar que el uso de filtrado de Id filtro, y si el filtro no cumple con los
requisitos, a continuación, devuelve falso, por lo que necesita para asegurarse de
que el valor final con los valores por defecto se ajusta a sus especificaciones.
Por ejemplo,
Utilice este - 169 -
documento en
viendo las nubes
construcción de
Las
variable
s de
Solicitud :: ejemplo () -> post ( 'e-mail', '', FILTER_VALIDATE_EMAIL);
entrada
// Obtiene solamenteGETpedidoidentificaciónynombrevariable
Solicitud :: ejemplo () -> solamente ([ 'id', 'nombre'], 'conseguir');
// Obtiene solamentePOSTALsolicituddeidentificaciónynombrevariable
Solicitud :: ejemplo () -> solamente ([ 'id', 'nombre'], 'post');
// excluiridentificaciónynombrevariable
Solicitud :: ejemplo () -> excepto ( 'id, nombre');
// excluiridentificaciónynombrevariable
Solicitud :: ejemplo () -> excepto ([ 'id', 'nombre']);
modificadores de variables
función del modificador de función de entrada soporta el uso de variables, puede
mejorar las variables de filtrado.
modific efecto
adores
s Reparto de tipo de
d cadena
Pieza moldeada a
b entero
FundidoTipo
a Boolean
una Pieza moldeada a tipo
F de matriza un tipo de
Fundido
punto flotante
Si desea obtener una matriz de datos, por favor nota dada a añadir /una
Modificadores para recoger correctamente Ll.
Cambiar
la
variable
Si es necesario cambiar el valor de una variable de petición, se pueden utilizar las
siguientes maneras:
// cambioGETvariable
Solicitud :: ejemplo () -> get ([ 'id' => 10]);
// cambioPOSTALvariable
Solicitud :: ejemplo () -> post ([ 'nombre' => 'ThinkPHP']);
Trate de evitar para modificar directamente los datos de $ _GET o $ _POST, pero
también no se puede modificar directamente las variables param, por ejemplo,
superficie de operación no es válida:
tipo de solicitud
// si GET solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s G e t ( ) ) e c h o "Actualmente GET solicitud";
// si POST solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s P o s t ( ) ) e c h o "Actualmente POST solicitud";
// si PUT solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s P u t ( ) ) e c h o "Actualmente PUT solicitud";
// si DELETE solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s D e l e t e ( ) ) e c h o "Actualmente DELETE
solicitud";
// si ajax solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s A j a x ( ) ) e c h o "Actualmente ajax solicitud";
// si PJAx solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s P j a x ( ) ) e c h o "Actualmente PJAx solicitud";
// Si el acceso a la máquina
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s M o b i l e ( ) ) e c h o "La visita actual es la de la
máquina";
// si HEAD solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s H e a d ( ) ) e c h o "Actualmente HEAD solicitud";
// si patch solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s P a t c h ( ) ) e c h o "Actualmente PATCH solicitud";
// si OPCIÓNS solicitud
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s O p t i o n s ( ) ) e c h o " Actualmente OPCIÓNS
solicitud";
// si cli
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s C l i ( ) ) e c h o "Actualmente cli ";
// si cgi
yoF ( S o l i c i t u d : : e je m p l o ( ) - > i s C g i ( ) ) e c h o "Actualmente cgi ";
ayudante
Por petición función de inyección objeto puede ser una aplicación más simple. Por
favor refiérase a la espalda de la sección de inyección de contenido solicitudes de
objetos.
solicitud de camuflaje
la aplicación:
// solicitud camuflaje
forma tipo de variable => ' _ m ' ,
'Var_method'
_ajax _pjax mano puede disimular variable de petición por GET / POST /
PUT similares.
la
informació
n de de la solicitud objeto puede ser utilizado para obtener el encabezado de
encabezado
cabecera
solicitud HTTP método de la petición actual, por ejemplo:
HTTP
$ Info = S o l i c i t u d :: e j e m p l o ( ) - >
cabecera (); echo $ Información [
'aceptar'];
echo $ I n f o r m a c i ó n [ ' A c c e p t -
Encoding']; echo $ Información
[ 'user-agent'];
También puede obtener directamente una solicitud de información de cabecera,
tales como:
Pseudo-estática
Es compatible con todos los visita sufijo estático, si usted desea conseguir el sufijo
actual pseudo-estático, puede utilizar el objeto Request
método ext. Por
ejemplo:
http: //serverName/index/blog/3.html
http:
//serverName/index/blog/3.shtml
http: //serverName/index/blog/3.xml
http: //serverName/index/blog/3.pdf
http: //serverName/index/blog/read/id/3.html
método
de
inyecció
Si necesita añadir sus propios métodos en el objeto de la petición de solicitud, se
n
puede utilizar el método de inyección de objeto Request
Las características tales como:
funcion G e t U s e r I n f o ( R e q u e s t $ S o l i c i t u d , $ U s e r I d )
Public f u n c i o n i n d e x ( )
$ Info = S o l i c i t u d :: e j e m p l o ( ) - > u s u a r i o ( I D d e u s u a r i o $ ) ;
}
inyecció
n
propied
actual La inyección puede ser dinámicamente propiedades de la solicitud de
adesmétodos:
objeto,
enlace de parámetros
namespace a p p \ i n d ex \
Public f u n c i o n l e e r ( $ i d )
id = 2016 = 5 años
y meses = 06
http: //serverName/index.php/index/blog/archive/month/06/year/2016
de la visita del usuario es (de por qué tal visita sería dejar a un lado):
http: //serverName/index.php/index/blog/read/
Public f u n c i o n l e e r ( $ i d = 0 )
namespace a p p \ i n d ex \
Public f u n c i o n l e e r ( $ i d )
id = 2016 = 5 años
y meses = 06
http: //serverName/index.php/index/blog/archive/06/2016
id = 5 años = 06
meses = 2016 y
prestar atención
namespace a p p \ i n d ex \
protected N o m b r e $ ;
Public f u n c i o n construir ($ name = n u l l)
$ This-> name = N o m b re $ ;
}
}
Si el acceso
inyección de dependencia
namespace a p l i c a c i ón \ i n d e x \
Solicitud;
class ín d i c e
protected $ S o l i c i t ud ;
$ This-> request = $ S o l i c i t u d ;
}
Public f u n c i o n h e l l o ( )
}
inyección de operación
El método de funcionamiento del controlador de la solicitud de invocación
objeto Request si es necesario, se puede definir en proceso de Solicitud
Tipo de parámetro, y el orden de las páginas independientes de parámetros, por
ejemplo:
Solicitud;
class ín d i c e
Public f u n c i o n H e l l o ( R e q u e s t S o l i c i t u d $ )
<? Php
namespace a p p \ i n d ex \ c o n t r o l a d o r ;
nosotrose p e n s a r \ Co n t r o l l e r ;
class i n d e x a m p l i a r s c o n t r o l a d o r
Public f u n c i o n h e l l o ( )
class ín d i c e
protected $
Solicitud; protected $
Usuario;
$ This-> request = $ S o l i c i t u d ;
$ This-> usor = $ U s ua r i o ;
}
inyección de operación
Nos modelo de usuario unión Ll petición actual de objeto:
<? Php
namespace a p p \ i n d ex \ c o n t r o l a d o r ;
nosotrose a p l i c a c i ón \
index \ modelo \ Usuario;
nosotrose pensar \
Controller;
class i n d e x a m p l i a r s c o n t r o l a d o r
Public f u n c i o n h o l a ( U s o r E l u s u a r i o $ )
}
Si no hay ningún objeto está obligado por adelantado solicitud objeto, a
continuación, llamar al método hola cuando los parámetros de usuario
instanciación automática, el equivalente de una operación de unión completado
siguiente:
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
Public S t a t i c f u n c i on I n v o k e ( R e q u e s t S ol i c i t u d $ )
$ Id = $ R e q u e s t - > pa r á m e t r o
( 'id'); RETURn Usuario ::
get ($ id);
}
}
solicitud de caché
edición Novedades
5.0.11 Solicitar etiquetas de
5.0.6 caché desolicitud
normas soportedede
almacenamiento
exclusión global en caché
de
5.0.4 Solicitud de apertura de
soporte
un de caché
móduloelde soporte
5.0.3 Aumentar apoyo
caché
mundialseparado
solicitud de
GET solicitud es válida sólo
almacenamiento en a petición caché, hay dos formas de establecer la
caché
solicitud de caché:
parámetros de ruta
Puede abrir regla de encaminamiento actual en la regla que define la solicitud de
enrutamiento caché de buffer de parámetros, por ejemplo:
Un identificador de petición caché para la dirección por defecto del pathinfo acceso
actual, el identificador de solicitud de caché se puede definir de la siguiente manera:
argumento caché en false, que indica una petición para cerrar la caché de ruta actual
ajustes dinámicos
Se puede ajustar dinámicamente solicitar que se almacenan en caché en el
comportamiento app_begin, por ejemplo:
apoyo variable de las variables de petición actual (es decir, todas las variables del
método PARAM). Usted puede utilizar la dirección URL actual como una identificación
deSolicitud
caché, de::laejemplo
siguiente manera:
() -> caché ( ' URL ', 600);
Toda solicitud de acceso a dicho sufijo html (GET) durante 10 minutos de caché.
base
de
datos
La nueva versión de la base de datos de la reconstrucción, las principales
características del prospecto:
Indica que la base de datos utilizando la conexión \ org \ db \ clase MySQL como
base de datos conectada a la unidad, en lugar del predeterminado
\ Piense \ db \ conector \
MySQl .
Cada módulo puede proporcionarse independientemente de los parámetros de
conexión de base de datos, y los mismos parámetros de configuración pueden no
necesitar ser repetida, por ejemplo, I
Se puede definir en el módulo de administración database.php fichero de
configuración:
return [
// Dirección
del servidor => ' 1 9 2 . 1 6 8 . 1 . 1 0 0 ' ,
'Nombre de
host' => ' A d m i n ' ,
// nombre
de la base
'Base de
Indica datos'
que el módulo de administración de base de datos en la dirección
];
192.168.1.100, cambió el nombre del administrador de base de datos, en realidad
ni siquiera E
Parámetros de contacto database.php como aplicación en la mano.
// reconexión abierto
'Break_reconnect' = > v e r d a d e r a ,
'Parámetros' = > [
\ PDO :: ATTR_PERSISTENT => v e r d a d e r a ,
\ PDO :: ATTR_CASE => \ P D O : : C A S E _ L O W E R ,
],
//Configuración de
la base de datos1
'Db_config1' = > [
// Tipo de base => 'MySQL',
de datos
'Tipo' => '127.0.0.1',
// Dirección
del servidor => 'ThinkPHP',
'Nombre de
host' => 'Raíz',
// nombre de
la base => ''
'Base
// Basede de datos de
datos'
codificación
'Juego de por => ' U t f 8 ' ,
Nombre de
defectoutf8
caracteres'
//
// prefijo
usuario de de la => ' T h i n k _ ' ,
base
], tabla
de datosde base de
datos
'Nombre
//Configuración dede la base de datos2
usuario'
'Prefijo'= > ' M y sq l : / / r o o t : 1 2 3 4 @ l o c a l h o s t : 3 3 0 6 /
'Db_config2'
T h i n k//P H Pbase
# ude
tf8';
datos de
contraseña
Podemos cambiar
'Contraseña'
Db :: connect (
'db_config1'); db :: connect
( 'db_config2');
//información de conexión de
base de datos proporcionada por
separado en el modelo
namespace a p p \ i n d ex \
modelo;
nosotrose p e n s a r \ Mo d e l o ;
class u s o r a m p l i a r s m o d e l o
protected $ c o n n e c t io n = [
// Tipo de base de datos
'Tipo' => ' M y S Q L ' ,
// La conectividad de base de
datosDSNconfiguración
'Dsn' => ''
// Dirección
del servidor => '127.0.0.1',
'Nombre de
host' => 'ThinkPHP',
// nombre de
la base => 'Raíz',
'Base de
datos' => ''
Nombre
// puerto dede
conexión de
base de de
usuario datos
base
'HostPort'
de datos => ' '
// parámetros
'Nombre de de conexión
de base de datos
usuario'
'Parámetros'
// base de
'Juego de =>
=> [' ]U ,t f 8 ' ,
Base
de de datos de
caracteres'
//
datos
// prefijo depor
codificación
contraseña la => ' T h i n k _ ' ,
]; tabla de base
defectoutf8
'Contraseña' de
} datos
'Prefijo'
//información de conexión de
base de datos proporcionada por
separado en el modelo
namespace a p p \ i n d ex \
modelo;
nosotrose p e n s a r \ Mo d e l o ;
class u s o r a m p l i a r s m o d e l o
nosotrose p e n s a r \ Mo d e l o ;
class u s o r a m p l i a r s m o d e l o
Tenga en cuenta que, la conexión de base de datos ThinkPHP es inerte, por lo que
no es sólo el número de conexiones en instanciación
De acuerdo a la biblioteca, pero cuando hay datos reales para conectarse a la base
de datos va a operar.
rw separado Ya sea para vender la base de datos para escribir una falso
num maestro separación efectivade
Escribe el número deservidores
maestro-esclavo
vendidos aislados 1
esclavo sin emperador
Especifica el número de serie del servidor no
campos estrictas Yan Ke comprueba si el campo está presente verdadero
tipo de Conjunto de datos Tipo de retorno formación
resultados
fecha y hora de campo de marca de forma automática por escrito falso
auto
explicación sQL La necesidad de Analizador de rendimiento efectiva falso
pregunta depuración
Especifique de SQL abierta
el objeto de consulta pensar \ db \ query
base de datos común parámetros de conexión (los params) pueden hacer referencia
amanual en línea de PHPEl ATTR_ empezando a PDO :: constantes.
Nota:
> Femenino femenino femenino
Si está utilizando pgsql Con bases de datos y, a continuación, importe
ThinkPHP / biblioteca / pensar / db / conector / pgsql.sql Ll
ejecución de archivos de base de datos.
uso
básico
Después de configurar la información de conexión de base de datos, podemos
utilizar directamente la operación en marcha la base de datos SQL nativo, y la
consulta de soporte
(Consulta) Mano método execute (escritura), y apoya enlace de parámetros.
generador
de
consultas
datos de la consulta
Adición de
datos de
actualización
de datos
borrar sintaxis
de consulta
método de
consulta de
datos de
encadenamie
nto de tiempo
de consulta
agregada
consultas
nativas
Búsqueda
Avanzada
vista
subconsulta
datos de la consulta
consulta básica
los datos de la consulta mediante:
Elija un método para consultar los resultados no existe, devuelve una matriz vacía
ayudante
db sistema proporciona una función de ayuda, puede consultar más fácilmente:
NOTA: Utilice la función por defecto db ayudante para conectarse cada vez que
se utiliza la base de datos Db :: name o Db :: table El método de la
realización son palabras individuales. Si la función deseada db mismo enlace, el
tercer parámetro se puede pasar, por ejemplo:
$ Query = N e b r a s k a w \ P i e n s e \ d b \ Q u e r y ( ) ;
$ Query-> Mesa ( 'think_user') -> donde ( 'status',
1); Db :: find ($ consulta);
Db :: seleccione ($ consulta);
método del valor para consultar los resultados no existe, return null
Por ejemplo, podemos enumerar todos los datos del usuario procesados en lotes,
cada proceso de grabación 100 de usuario:
Adición de datos
edición ajuste
5.0.10 insertAll métodos de apoyo
5.0.5 añadir datos / parámetros
reemplazar inc / diciembre / exp El
cálculo de los datos
Añadir piezas de datos
El empleo
db de insert Método para enviar datos a la base de datos
las clases ar
$ Datuna =
[ => 'Bar', ' B a r ' = > ' F o o' ] ,
[ 'Foo' => 'Bar1', ' B a r ' = > ' F oo 1 ' ] ,
[ 'Foo' => 'Bar2', ' B a r ' = > ' F oo 2 ' ]
[ 'Foo'
];
Db :: nombre ( 'usuario') -> insertAll
(datos $);
insertAll manera de agregar datos devueltos con éxito varios exitosa añade
ayudante
// Añadir una sola de datos
db ( 'usuario') -> insertar (datos $);
actualización rápida
método de actualización rápida de datos de los paquetes anteriores v5.0.5
+ se pueden utilizar con el inserto.
Db :: mesa ( 'datos')
-> Datos ([ 'nombre' => 'TP', 'puntuación' => 1000])
-> Insertar ();
actualización de datos
edició ajuste
n
5.0.5 añadir datos / inc / diciembre / exp El
cálculo de los datos
Actualizar los datos de los datos de la tabla
Db :: mesa ( 'think_user') -> donde ( 'id', 1 ) - > a c t u a l i z a c i ó n ( [ ' n o m b r e ' = >
'ThinkPHP']);
Db :: mesa ( 'think_user') -> actualización ([ 'nombre' = > ' T h i n k P HP ' , ' i d ' = > 1 ] ) ;
Si desea actualizar los datos realmente necesita para utilizar las funciones SQL o
campo E, puede utilizar las siguientes maneras:
Db :: mesa ( 'think_user')
-> donde ( 'id', 1 )
-> actualización ([
'Login_time' => [ ' E x p ' , ' n o w ( ) ' ] ,
'login_times' => [ 'Exp', 'login_times +
1'],
]);
// S C O R e corte de campo 1
Db :: mesa ( 'think_user') -> donde ( 'id', 1 ) - > s e t D e c ( ' p u n t u a c i ó n ' ) ;
// S C O R e corte de campo 5
Db :: mesa ( 'think_user') -> donde ( 'id', 1 ) - > s e t D e c ( ' p u n t u a c i ó n ' , 5 ) ;
actualización retardada
actualización setInc / setDec apoya la demora, si el retraso necesario para
actualizar el tercero parámetro pasado
En el retraso siguiente ejemplo 10 segundos, se añade la columna a la puntuación
de 1
ayudante
// Actualizar los datos de los datos de la tabla
db ( 'usuario') -> donde ( 'id', 1) -> actualización ([ 'nombre' = > ' T hi n k P H P ' ] ) ;
// Actualizar el valor de un campo
db ( 'usuario') -> donde ( 'id', 1) -> setField ( 'nombre', 'ThinkPHP');
// incremento SCORe campo
db ( 'usuario') -> donde ( 'id', 1 ) - > s e t I n c ( ' p u n t u a c i ó n ' ) ;
// decremento SCORe campo
db ( 'usuario') -> donde ( 'id', 1 ) - > s e t D e c ( ' p u n t u a c i ó n ' ) ;
Db :: mesa ( 'datos')
-> donde ( 'id', 1)
-> inc ( 'leer')
-> DEC ( 'puntuación', 3)
-> exp ( 'nombre', 'SUPERIOR (nombre)')
-> actualización ();
borrado
de
datos
Los datos borrar datos en la tabla
// Eliminar de acuerdo a la clave primaria
Db :: mesa ( 'think_user') -> delete (1); db ::
mesa ( 'think_user') -> delete ([1,2,3]);
// Eliminación
Db :: mesa ( 'think_user') -> donde ( 'id', 1) -> delete (); db
:: mesa ( 'think_user') -> donde ( 'id', '<', 10) -> delete ();
ayudante
// Eliminar de acuerdo a la clave primaria
db ( 'usuario') -> delete (1);
// Eliminación
db ( 'usuario') -> donde ( 'id', 1) -> delete ();
métodos de consulta
Db :: mesa ( 'think_user')
-> donde ( 'nombre', 'como', '% ThinkPHP')
-> donde ( 'status', 1)
-> find ();
Db :: mesa ( 'think_user')
-> donde (nombre y título ', 'como', '% ThinkPHP')
-> find ();
whereOr método
WhereOr método que utiliza una consulta OR:
Db :: mesa ( 'think_user')
-> donde ( 'nombre', 'como', '% ThinkPHP')
-> whereOr ( 'titulo', 'como', '% ThinkPHP')
-> find ();
Db :: mesa ( 'think_user')
-> donde ( 'nameItitle', 'como', '% ThinkPHP')
-> find ();
consulta mixta
mano Método whereOr método en el que una consulta compleja a menudo tienen
que utilizar complejo mixto juntos, dan los siguientes ejemplos
Sub:
$ Query-> donde ( 'nombre', ' M e g u s t a ' , ' Th i n k ' ) - > w h e r e O r ( ' n o m b r e ' ,
'Me gusta', 'Thin
KPHP ');
}) -> seleccione ();
SELECT * F R OM , T h i nk _ u s e r , w h e r E ( , Id, = 1 O R , I d , = 2 ) O R ( ,
Nombre, LIKE ' T h i n k ' O R , N o m b r e , L I K E ' T h i n k P H P ' )
getTableInfo método
Utilice getTableInfo puede obtener información de la tabla, información de tipo de
paquete campos insertados, tipo, se unen, pk, mostrar una serie de Mostrar, puede
especificar cierta adquisición de información
sintaxis de la consulta
expresión de consulta
edició Novedades
n
5.0.9 Las operaciones de comparación
5.0.4 para aumentar
método el cierre
de consulta de bollos
llamada de
compatibilidad con consultas
soporte en el mismo campo
expresiónvarias
de consulta
veces de sintaxis de consulta SQL es compatible con la mayoría, pero
también la esencia de ThinkPHP lenguaje de consulta, las expresiones de consulta de
la
Por tipo de Ke:
expresión significado
EQ, = Es igual (=)
NEQ, <> no es igual a (<>)
GT,> Mayor que (>)
EGT,> = Mayor o igual que (> =)
LT, < Menos de (<)
ELT, <= Menor o igual que (<=)
COMO consulta difusa
[NO] ENTRE (No) variar consultas
[NO] EN (No) en la investigación
[NO] NULL Consultar si un campo (no)
[NO] EXISTE ser NULL
EXISTE consulta
EXP expresiones de consulta,
> Tiempo apoyo a la sintaxis
comparación SQL
del tiempo
<Hora comparación del tiempo
entre el tiempo comparación del tiempo
consulta se convierte
name li k e ' Th in kPH P %'
consulta se convierte
yod T RE N 1 A N D 8
consulta se convierte
yod N O T yo N (1 ,5 ,
8)
[NO] y o N Consulta apoya el uso de manera cierres
[NO] NULL:
Si el campo de consulta (no) es nulo, como por ejemplo:
donde ( 'nombre', n u ll ) ;
donde ( 'title', 'nulo');
donde ( 'nombre', 'not
null ');
EXP: Expresión
Admitir las consultas más complejas como por ejemplo:
consulta condiciones exp no será tratado como una cadena, por lo que la consulta
de apoyo para la espalda puede utilizar cualquier paquete de sintaxis SQL
función de interpolación usando la mano el nombre del campo.
encadenando
Db :: mesa ( 'think_user')
-> donde ( 'status', 1)
-> orden ( 'CREATE_TIME')
-> límite (10)
-> seleccionar ();
Db :: mesa ( 'think_user')
-> orden ( 'CREATE_TIME')
-> límite (10)
-> donde ( 'status', 1)
-> seleccionar ();
método de consulta real puede ser utilizado no sólo una operación consistente, el
prospecto CUAJADA todos los métodos se pueden utilizar, por ejemplo:
Db :: mesa ( 'think_user')
-> donde ( 'id', 1)
-> campo ( 'id, nombre, correo electrónico')
-> find (); Db :: mesa (
'think_user')
-> donde ( 'status', 1)
-> donde ( 'id', 1)
-> delete ();
métodos de encadenamiento
son:
Todas las operaciones son retornos consistentes la instancia actual del modelo de
objetos (este), la verdadera identidad de la mujer con un tono expresado en
repetidas ocasiones el apoyo
Con.
donde
consulta Expresiones
La nueva versión de la expresión de consulta con una nueva forma de utilizar la
consulta expresión de tipo Ke:
Db :: mesa ( 'think_user')
-> donde ( 'id', '>', 1)
-> donde ( 'nombre', 'ThinkPHP')
-> seleccionar ();
investigación general
La forma más fácil de consultar una serie de la siguiente manera:
// función de ayuda
db ( 'usuario') -> donde ($ mapa) -> seleccione ();
condición cuerdas
Condiciones consulta directamente cadena de operación con una mano, por ejemplo:
SELECT * F R OM t h i n k _u s e r w h e r E t y p e = 1 AN D e s t a d o = 1
mesa
uso
En circunstancias normales, cuando la operación del sistema modelo para identificar
automáticamente la corriente correspondiente a la tabla de datos, por lo tanto, un
método de uso de la mesa
Por lo general, para:
Db :: mesa ( ' USUARIO ') -> donde (' status> 1 ') -> seleccionar ();
actualmente con
La base de datos debe entregar la tabla de datos. Después de cambiar la tabla de
datos, el sistema recuperará automáticamente en caché después de la tabla de datos
de campo de traspaso.
Con el fin de evitar conflictos MySQL mano de palabras clave, podemos recomendar
el uso de matrices de definir, por ejemplo:
La ventaja de utilizar una matriz se define por la forma en que la situación se puede
evitar porque la tabla Nade palabra clave conflictos y errores.
alias
Db :: mesa ( 'think_user') -> alias ( 'a') -> join ( ' DEPARTAMENTO b ''
B.user_id= a.id '
) -> seleccione ();
SELECT * F R OM t h i n k _u s e r una I N N E R J O I N t h i n k _ d e p t b O N b . u se r _ i d = a . i d
v5.0.2 + versión, se puede pasar una matriz de tablas de datos por lotes y alias
de configuración, tales como:
SELECT * F R OM t h i n k _u s e r u s o r I N N E R J O I N t h i n k _ d e p t D E P t O N d e p t . u s e r _ i d
= user.id
campo
Db :: mesa ( 'think_user') -> campo ( 'id, título, contenido') -> seleccione ();
SELECT i d , t i t l e , c on t e n t F R O M m e s a
SELECT I d e n t i f i c a c i ón , n i c k n a m e u n a s n a m e F R O M m e s a
Db :: mesa ( 'think_user') -> campo ( 'id, SUM (puntuación)') -> seleccione ();
Db :: mesa ( 'think_user') -> campo ([ 'id', 'título', 'contenido']) -> seleccione ();
Definir una matriz alias de realización se pueden definir para ciertos campos, por
ejemplo:
Db :: mesa ( 'think_user') -> campo ([ 'id', 'apodo' => 'nombre']) -> seleccione ();
SELECT I d e n t i f i c a c i ón , n i c k n a m e u n a s n a m e F R O M m e s a
Para algunos campos requieren más complejas, las ventajas más evidentes de la
matriz, por ejemplo:
Db :: mesa ( 'think_user') -> campo ([ 'id', 'concat (nombre, "-", id)' => 'nombre
verdadero', 'L EFT (título, 7)' => 'sub_title' ]) -> seleccione ();
SELECT * F R OM m e s a
Pero esto no es lo que dije obtener todos los campos, sino explícitamente llamar a
todos los campos (para los requisitos de alto rendimiento del sistema
CE, este requisito no es demasiado, al menos, es un buen hábito), el siguiente uso
puede ser completado como se pretende:
campo (verdadero) el uso voluntad explícita Cuadro presenta todos los campos,
incluso si la tabla tiene 100 palabras
Sección.
A continuación, recupera todos los campos, además del contenido, para excluir más
campos también puede:
Tenga en cuenta que la exclusión no soporta las manos del juego Únete a la mesa
de operaciones.
para la escritura
Además de la operación de consulta, los métodos de campo no es una característica
de seguridad muy importante - la legitimidad del campo de detección. de campo de
unión Método
método de co-escritura se puede completar con una base de datos de pruebas de
Utilice este - 229 -
documento en
viendo las nubes
construcción de
encaden
ando
campo de la legalidad de envío del formulario, si utilizamos en el tratamiento de un
envío del formulario:
Esto significa que la forma del campo jurídico único título, correo electrónico peones
de contenido, no importa lo que el usuario por medio de
Cambiar o añadir un navegador para presentar campo, protegerá directamente.
Debido a que es realmente todo los campos que no queremos que decidir enviada
por el usuario, se puede auto-completar función para definir campos adicionales por
escrito.
// Cerca de
inspección de campo falso,
estricto
'Fields_strict' = >
orden
Db :: mesa ( 'think_user') -> donde ( 'estado = 1') -> orden (id d e sc ' ) - >
límite (5) -> s elegidos ();
Db :: mesa ( 'think_user') -> donde ( 'estado = 1') -> orden (id d e sc , e s t a d o ) - >
Limi t (5) -> seleccione ();
Db :: mesa ( 'think_user') -> donde ( 'estado = 1') -> orden ([ 'orden', 'id' =>
'desc'])
-> límite (5) -> seleccionar ();
límite
Db :: mesa ( 'think_user')
-> donde ( 'estado = 1')
-> campo ( 'id, nombre)
-> límite (10)
-> seleccionar ();
El método también puede utilizarse para limitar las operaciones de escritura, como la
actualización de datos cumple con tres requisitos:
Db :: mesa ( 'think_user')
-> donde ( 'puntuación = 100')
-> límite (3)
-> actualización ([ 'nivel' => 'A']);
consulta de paginación
consulta el artículo de paginación se utiliza para limitar el método más aplicaciones
de uso común, tales como:
Para tablas grandes, trate de limitar los resultados de la consulta utilizando el límite,
de lo contrario, dará lugar a una gran cantidad de problemas de rendimiento de la
mano sobrecarga de memoria.
página
Db :: mesa ( 'think_article') -> límite (25) -> página (3) -> seleccionar ();
Cuando el método de página sólo cuando los valores entrantes, representan las
primeras páginas, y limitar el número de métodos se utilizan para fijar la pantalla por
página,
Esta formulación anterior es equivalente a:
grupo
nosotros todos los resultados de la búsqueda como la identificación del usuario a las
Db :: mesa ( 'think_user')
-> campo ( 'user_id, nombre de usuario, max (puntuación)')
-> grupo ( 'user_id')
-> seleccionar ();
SELECT u s e r _ i d , n o m br e d e u s u a r i o , m á x ( p u n t u a c i ó n ) F R O M t h in k _ s c o r e G R O U P
BY user_id
También es compatible con una pluralidad de campos del paquete, por ejemplo:
Db :: mesa ( 'think_user')
-> campo ( 'user_id, test_time, nombre de usuario, max (puntuación)')
-> grupo ( 'user_id, test_time')
-> seleccionar ();
SELECT u s e r _ i d , t e s t_ t i m e , n o m b r e d e u s u a r i o , m á x ( p u n t u a c i ó n ) F R O M
think_score GROUP BY Nos er_id, test_time
tener
Db :: mesa ( 'think_user')
-> campo ( 'nombre de usuario, max (puntuación)')
-> grupo ( 'user_id')
-> having ( 'count (test_time)> 3')
-> seleccionar ();
SELECT n o m b r e d e u s ua r i o , m a x ( p u n t u a c i ó n ) F R O M t h i n k _ s c o r e G R O U P B Y u s e r _ i d
HAVING contar
(Test_time)> 3
unirse
Únete por lo general tienen los siguientes tipos, diferentes tipos de impacto acción
de unir datos devueltos resultados.
explicación
object j o i n ( m i x e d jo i n [ , m i x e d $ C o n d i t i o n = n u l l [ , s t r i n g $ T y p e =
'EN NER']] )
consulta.
parámetros
unirse
condiciones relacionadas. Puede ser una cadena o una matriz, Es una matriz cada elemento está
asociado con una condición.
tipo
El valor de retorno
ejemplo
modelo de
objetos
Db :: mesa ( 'think_artist')
-> alias ( 'a')
-> join ( 'think_work w ' ' a i d = w . a r t i s t _ i d ' )
-> join ( 'think_card c ' ' a . c a r d _ i d = c . i d ' )
-> seleccionar ();
Db :: mesa ( 'think_artist')
-> alias ( 'a')
-> join ( ' TRABAJO w '' aid = w . a r t i s t _i d ' )
-> join ( ' TARJETA c '' a.card_id = c . id ' )
-> seleccionar ();
$ Join = [
[ 'Think_work w ' ' a .i d = w . a r t i s t _ i d ' ] ,
[ 'Think_card c ' ' a .c a r d _ i d = c . i d ' ] ,
];
Db :: mesa ( 'think_user') -> alias ( 'a') -> join (unir $) -> seleccione ();
Db :: mesa ( 'think_user') -> join ( ' TRABAJO '' ARTISTA .id = TRABAJO
.artist
_id ') -> seleccione ();
Db :: mesa ( 'think_user') -> alias ( 'a') -> join ( 'WORd w ' ' a i d = w . a r t i s t _ i d
'' correcto ') -> seleccione ();
unión
Db :: campo ( 'nombre')
-> mesa ( 'think_user_0')
-> unión ( 'SELECT n a me F R O M t h i n k _ u s e r _ 1 ' )
-> unión ( 'SELECT n a me F R O M t h i n k _ u s e r _ 2 ' )
-> seleccionar ();
Uso de cierres:
Db :: campo ( 'nombre')
-> mesa ( 'think_user_0')
-> unión (function ($ consulta)
$ Query-> campo ( 'nombre') -> mesa ( 'think_user_1');
})
-> unión (function ($ consulta)
$ Query-> campo ( 'nombre') -> mesa ( 'think_user_2');
})
-> seleccionar ();
Db :: campo ( 'nombre')
-> mesa ( 'think_user_0')
-> unión ([ 'SELECT n a me F R O M t h i n k _ u s e r _ 1 ' ' S E L E C T n a m e F R O M e r _ 2
think_us '])
-> seleccionar ();
Db :: campo ( 'nombre')
-> mesa ( 'think_user_0')
-> unión ( 'SELECT n a me F R O M t h i n k _ u s e r _ 1 ' , t r u e )
-> unión ( 'SELECT n a me F R O M t h i n k _ u s e r _ 2 ' , t r u e )
-> seleccionar ();
Db :: campo ( 'nombre')
-> mesa ( 'think_user_0')
-> unión ([ 'SELECT n a me F R O M t h i n k _ u s e r _ 1 ' ' S E L E C T n a m e F R O M e r _ 2
think_us '], true)
-> seleccionar ();
distinto
array (2)
[0] = > a r r a y ( 1 )
[ "User_login"] = > s t ri n g ( 7 ) " C h u n i c e "
}
[1] = > a r r a y ( 1 )
[ "User_login"] = > s t ri n g ( 5 ) " A d m i n "
}
}
blo
que
ar
método de bloqueo es un mecanismo de bloqueo para la base de datos, si la
consulta o realizar una operación cuando se utiliza:
Db :: nombre ( 'usuario') -> donde ( 'id', 1) -> cerradura (verdadero) -> find ();
cache
El método utilizado para las operaciones de caché caché de consultas, sino también
método consistente de operación.
caché puede ser utilizado para seleccionar, encontrar, método de columna quiral
valor y el verdadero método derivado usando Después de que el método de caché,
no estará dentro del período de validez de la consulta de base de datos de caché
de nuevo, pero conseguir la caché de datos directamente en el tipo de sistema de
la mano caché de datos puede referirse a la sección de caché.
Db :: mesa ( 'think_user') -> donde ( 'id = 5') -> caché (verdadero) -> find ();
Los primeros resultados se almacenan en caché las consultas, consultar los mismos
datos una segunda vez devolver el contenido de la memoria caché de forma directa,
sin
La necesidad de una operación de consulta de base de datos de nuevo.
Por defecto, la duración de la caché está determinada por los parámetros por
defecto de la configuración de la caché, el método de caché especificado
individualmente, por ejemplo:
Por último, las consultas de datos no están sujetos a consulta el artículo IMPACTO
caché, asegúrese de que la actualización de consulta mano o borrar utilizando el
mismo estándar de la antememoria
Conocimiento para borrar automáticamente la caché.
comentario
Db :: mesa ( 'think_score') -> Comentario ('Consultar los diez resultados de las pruebas')
-> campo ( 'nombre de usuario, la cuenta')
-> límite (10)
-> orden (SCORe d e s c ')
-> seleccionar ();
SELECT n o m b r e d e u s ua r i o , S C O R e F R O M t h i n k _ s c o r e O R D E R B Y S CO R e d e s c
L I M I T 1 0 / * Consultar los diez resultados de las pruebas * /
fetchSql
fuerz
a
S proceso de fuerza para los datos de fuerza de la cuerda establecen operaciones,
tales como:
Para forzar el uso de consultas de los usuarios de cable s, el usuario debe ser el
nombre de la tabla del cable de datos s realidad creada.
lazo
tabique
partición (datos $, $ c a m p o , R e g l a $ ) ;
// $ D a t una El campo de los paquetes de datos
// $ F i e l d Nombre del sub-tabla de un campo
// $ R u l e normas sub-mesa
Nota: No use palabras clave en cualquier declaración SQL aparecerán como nombres
de tablas, nombres de campo, tales como el orden y así sucesivamente. conducirá
modelo de datos de error de
sigue:
$ Rule = [
'Tipo' = > ' M o d ' , / / Modo de subtabla
Num' => 1 0 // Número de tabla de puntos
];
Db :: nombre ( 'log')
-> partición ([ 'user_id' = > 1 1 0 ] , " U s e r _ i d ", R e g l a $ )
-> insertar ($ data);
estri
cto
Un método de fijación estricta de verificación Yan Ke si el nombre de campo se
utiliza como sigue:
failException
// múltiples investigaciones
Db :: nombre ( 'blog')
-> donde ([ 'estatus' = > 1 ] )
-> selectOrFail ();
secuenci
a
método de secuencia utilizado para especificar el nombre de la base pgsql
secuencia de incremento, que realmente no tiene que utilizar el uso de la
base de datos E es:
Db :: nombre ( 'usuario') -> secuencia ( 'id') -> insertar ([ 'nombre' => 'ThinkPHP']);
métod explicación
o
contar El número de las estadísticas, los
máx parámetros
Obtener estadísticos
parámetro para el máximo
estadístico nombre adel
campo (opcional)
nombre
min Obtener del campo (requerido)
parámetros estadísticos mínimos
avg nombres de campo (debe)
Obtener parámetros estadísticos promedio
suma nombres
Salir, a losde campo (debe)
parámetros estadísticos del
nombre del campo (requerido)
Ejemplo de uso:
De la consulta
Búsqueda avanzada
Rápido y fácil
Una forma rápida y fácil de simplificar el texto es el mismo tipo de consulta en varios
campos, puede progresar a simplificar la redacción de las condiciones de la consulta
en
I divide entre una pluralidad de campos representados por una consulta de O, la
consulta representada por Y y segmentación, la siguiente consulta puede ser
implementado, por ejemplo:
Db :: mesa ( 'think_user')
-> donde ( 'nameItitle', 'como', 'ThinkPHP%')
-> donde ( 'CREATE_TIME y update_time', '>', 0)
-> find ();
consulta intervalo
Intervalo Especies consulta simplificada está escrito en el mismo campo de la
pluralidad de condiciones de consulta, por ejemplo:
Db :: mesa ( 'think_user')
-> donde ( 'nombre', [ 'como', 'ThinkPHP%'], [ 'como', '% ThinkPHP'])
-> donde ( 'id', [ '>', 0], [ '<>', 10], 'o')
-> find ();
Db :: mesa ( 'think_user')
-> donde ( 'nombre', [ 'como', 'ThinkPHP%'], [ 'como', '% ThinkPHP'])
-> donde ( 'id', 5, [ '<>', 10], 'o')
-> find ();
Db :: mesa (
'think_user')
-> donde ([ [ 'Like', 'ThinkPHP%'],
'Nombre' [ 'Like', '%
=> 'Título' ThinkPHP'],
=> 'id' =>=>
'Estado' [ '>', 0],
]) 1
-> seleccionar
();
cierres de consulta
Db :: mesa ( 'think_user') -> seleccione (function ($ consulta)
$ Query-> donde ( 'nombre', 'ThinkPHP')
-> whereOr ( 'id', '>', 10);
});
consulta mixta
Todos pueden combinarse en la forma de consulta híbrido anteriormente
mencionado Ll es, por ejemplo:
Db :: mesa ( 'think_user')
-> donde ( 'nombre', [ 'como', 'ThinkPHP%'], [ 'como', '% ThinkPHP'])
-> donde (function ($ consulta)
$ Query-> donde ( 'id', [ '<', 10], [ '>', 100], 'o');
})
-> seleccionar ();
Db :: mesa ( 'think_user')
-> donde ( 'id > 0 A ND n a m e L I K E " T h i n k P H P % " ' )
-> seleccionar ();
Db :: mesa ( 'think_user')
-> donde ( 'id > : I d AN D n a m e L I K E : N a m e ' [ ' I d ' = > 0 , ' N o m b r e ' = >
'ThinkPHP%'
])
-> seleccionar ();
método efecto
whereNull Consultar si el campo es
whereNotNull nulo
Consultar si el campo no
donde es
ENnulo
campo de consulta
whereNotIn El campo en la consulta
whereBetween El campo entre la
whereNotBetween investigación
El campo entre la
whereLike investigación
campo de consulta
whereNotLike COMO
El campo consulta como
whereExists EXISTE condiciones de
whereNotExists investigación
NO EXISTE condiciones
whereExp de investigación
consulta Expresiones
vista consulta
SELECT U s e r . i d , U s e r. n a m e , P r o f i l e . t r u e n a m e , P r o f i l e . p h o n e ,
Profile.email, re.scor Scoe FROM think_user usor INNER JOIN think_profile
Profile ON perfil
.user_id = User.id IN N E R J O I N t h i n k _ s o c r e S C O R e O N S c o r e . u s er _ i d =
Profile.id WherE Score.score > 80
Tenga en cuenta que la consulta vista sin tener que llamar a la unión de
tablas método de las manos, y el método de escala donde la mano de
orden
Cuando sólo tendrá que utilizar nombres de
SELECT U s e r . i d l aS UI D , U s e r . n a m e l a S c u e n t a , P r o f i l e . t r u e n a m e ,
Profile.phone
, Profile.email, Score.score F R OM t h i n k _u s e r u s o r I N N E R J O I N
think_profile Profile ON Profile.user_id = User.id INNER JOIN think_socre
S C O R e O N S c o r e . U s e r_ i d = P r o f i l e . i d w h e r E S c o r e . s c o r e > 8 0
Que se puede utilizar para definir una serie de nombres de tabla y alias, por ejemplo:
Db :: vista ([ 'think_user' => 'miembro'], [ 'id' => 'uid', 'nombre' => 'cuenta'])
-> view ( 'Perfil', 'verdadero nombre, teléfono, correo electrónico',
'Profile.user_id = member.id')
-> ver ( 'puntuación', 'puntuación', 'Score.user_id = Profile.id')
-> donde ( 'puntuación', '>', 80)
-> seleccionar ();
SELECT m e m b e r . i d la S U I D , m e m b e r . n a m e l a S c u e n t a , P r o f i l e . t r u e n a m e ,
Profile.p piedra de afilar, Profile.email, Score.score FROM think_user
m e m b e r I N N E R J O I N t hi n k _ p r d e I L e P r o f i le O N P r o f i l e . u s e r _ i d = m e m b e r . i d
I N N E R J O I N t h i n k _ so c r e S C O R e EN S co r e . u s e r _ i d = P r o f i l e . i d w h e r E
Score.score > 80
subconsultas
En primer lugar constructores SQL consulta, puede utilizar tres de las siguientes
maneras de construir una sub consulta.
1, seleccionar método
Cuando el método de selección de parámetro es falsa, dijo que no acaban de volver
a consultar SQL edificio, tales como:
SELECT , I d , , , n o m br e , F R O M , T h i n k _ u s e r , w h e r E , I d , > 1 0
SELECT , I d , , , n o m br e , F R O M , T h i n k _ u s e r , w h e r E , I d , > 1 0
No se consulta real después de llamar método BuildSQL, pero sólo las consultas
generadas instrucción SQL (con el fin de evitar
Mezclar las fugas, ambas partes estarán en SQL más el número de inserción), y luego
llamar directamente directamente en la consulta posterior.
Tenga en cuenta que los dos métodos antes de su uso añadir su propio 'número
interpuesta'.
A continuación, utilice la nueva estructura de consulta subconsulta:
SELECT * F R OM ( S E L E CT , I d , , , n o m b r e , F R O M , T h i n k _ u s e r , w h e r E , I d , >
1 0 ) WHERE a . n a me L I KE ' T h i n k P H P ' O R D E R BY , I d , d e s c
Db :: mesa ( 'think_user')
-> donde ( 'id', 'EN', function ($ consulta)
$ Query-> Mesa ( 'think_profile') -> donde ( 'status', 1) -> campo ( 'id');
})
-> seleccionar ();
SELECT * F R OM , T h i nk _ u s e r , w h e r E , I d , y o N ( S E L E C T , I d , F R O M , E
Think_profil, wherE , Estado, = 1 )
SELECT * F R OM , T h i nk _ u s e r , w h e r E e x i s t i r S ( S E L E C T * F R O M ,
T h i n k _ p r o f i l e , W AQUÍ , E s t a d o , = 1 )
clase db apoya consulta SQL nativo, el paquete principal insertar los dos
métodos siguientes:
pregunta método
método de consulta utilizado para ejecutar la consulta SQL, si los datos son
ilegales o consulta incorrecta devuelve falso, de lo contrario, devuelve los
datos de resultados de la consulta (seleccione el mismo método).
Ejemplo de uso:
método de ejecución
ejecutar la operación de SQL para la actualización de los datos escritos a mano, si los
datos son ilegales o consulta incorrecta devuelve falso, de lo contrario, devuelve el
número de registros IMPACTO.
Ejemplo de uso:
consulta
de
eventos
evento Query (V5.0.4 +)
Desde la versión 5.0.4+, añade soporte base de datos de eventos operacionales
cuajada, el prospecto:
evento descripción
antes de seleccionar Hace
selección
antes del consulta
encontrardeHace
hallazgo devolución
consulta de llamada
después de la insertar de devolución
Después de la
inserción de llamada
operación de Después
después de la actualización
actualización devolución
de de llamada
la operación
después de borrar Después de
de la
es exitosa de llamada
devolución
borrar operación de
es exitosa
evento de consulta admite
devolución deencontrar,
llamada seleccionar, insertar, actualizar borrar
método sólo mano.
es exitosa
registro de eventos
Utilice el siguiente método para registrar una consulta de base de datos de eventos
operaci
ones
transacc
Utilice la transacción, que necesita para apoyar el procesamiento de transacciones
ionales
motor de base de s. Por ejemplo, MyISAM de MySQL no soporta transacciones
Proceso requiere motor InnoDB s.
// Comience
asuntos Db ::
StartTrans
(intentar);
Db :: mesa ( 'think_user') -> find (1);
db :: mesa ( 'think_user') -> delete
(1);
// Confirmar la transacción
Db :: Commit ();
} CATCh (\ Exception $ E)
// Deshacer la transacción
Db :: rollback ();
}
SQL
monitor
Si activa el modo de depuración de base de datos, entonces cualquier operación de
SQL se pueden realizar en una base de datos para controlar, utilizar el siguiente
métodos:
Procedi
mientos
almacen
5.0 es compatible con los procedimientos almacenados, si definimos una base de
ados
datos almacenada procedimiento sp_query, puede utilizar la siguiente manera
llamar a:
conjunto de datos
return [
// Tipo de base de datos
'Tipo' => ' M y S Q L ' ,
// La conectividad de base de
datosDSNconfiguración
'Dsn' => ''
// Dirección
del servidor => '127.0.0.1',
'Nombre de
host' => 'ThinkPHP',
// nombre de
la base => 'Raíz',
'Base de
datos' => ''
Nombre
// puerto dede
conexión de
base de de
usuario datos
base
'HostPort'
de datos => ' '
// parámetros
'Nombre de de conexión
de base de datos
usuario'
'Parámetros'
// base de
'Juego de => ['Utf8',
=> ],
Base
de de datos de
caracteres'
//
datos
// prefijo depor
codificación
contraseña la => 'Think_',
tabla
// de base de
Conjunto de datos Tipo de retorno
defectoutf8
'Contraseña'
datos
'Resultset_type' = > ' C o l e c c i ó n ' ,
]; 'Prefijo'
$ usuarios = D b : : no m b r e (
'usuario') -> seleccione (); if ($
usuarios-> estaVacia ())
echo 'conjunto de datos está vacía';
}
método descripción
estaVacia está vacía
toArray Conversión a array
todos todos los datos
fundirse E fusionar datos reales
diff Comparación de la matriz, establece
diferencia
capirotazo Mano retorno
de intercambio de datos de valores
cruzarse clave
la lista de comparación, devuelve la
llaves intersección
Devolver todos los nombres clave en los
música datos
Eliminar el último elemento de datos
pop
cambio Eliminar datos en el primer elemento
unshift Se inserta al principio de los elementos
reducir de datos el uso de una función definida
Mediante
marcha por el usuario para
reordenamiento de devolver una matriz de
datos inversa
atrás cadenas
pedazo Los datos se dividen en una pluralidad de
cada bloques
Para deelemento
cada datos de devolución de
//definiciones de
configuración de base de
datos distribuida
return [
'Despliegue => 1,
' Habilitar base de
//
datos
// Tipodistribuida
de => 'MySQL',
base de datos
'Tipo' => '192.168.1.1,192.168.1.2'
// Dirección
del servidor => 'Demo',
'Nombre
// Nombre de de
host' de base => 'Raíz',
usuario
de
// datos
nombre
'Nombre
de la base de
usuario' => ''
'Base
// de de conexión
puerto
//
de basede
base
datos' dedatos
datos de
'HostPort' => ' '
]
contraseña
'Contraseña'
mano
Equivalente.
Utilice este - 275 -
documento en
viendo las nubes
construcción de
base de
datos
distribuida
'Nombre de usuario'
=> 'usuario1',
'password' => 'pwd1',
mano
Equivalente.
'Rw_separate' = > v e rd a d e r a ,
mo
del
o
El nuevo modelo ha sido reconstruido, más operaciones orientados a objetos, la
reconstrucción asociación paquete de modelo de inserción, las principales
características de la inserción del paquete:
Por favor, no la mente una versión del modelo 3.2 a 5,0 usando
el modelo, el agarre de la mano entender completamente el uso
del nuevo modelo para el dominio de TP5 gran ayuda.
definiciones
edició ajuste
n
5.0.5 modelo o Cargador :: modelo Métodos modelo de
soporte nombre de la clase pasó en su totalidad
definición del modelo
El usuario define una clase del modelo:
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
}
La clave principal por defecto para la identificación automática, si los atributos
especificados deseados se pueden establecer:
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
llamadas modelo
Clase puede utilizar los llamados modelos estáticos o instanciados llamada de dos
maneras, por ejemplo:
modelo
de
inicializaci
modelo de inicialización
ón
El modelo también es compatible con la inicialización, y la inicialización del
controlador es diferente es que la inicialización del modelo es reescribir Modelo
inicializar, como sigue
namespace a p l i c a c i ón \
pensar \ Modelo;
class i n d e x a m p l i a r s m o d e l o
namespace a p l i c a c i ón \
pensar \ Modelo;
class i n d e x a m p l i a r s m o d e l o
nuevo
$ usuario = Nebraskaw u s u a r i o ;
$ Usuario-> = 'ThinkPHP';
nombre = 'Thinkphp@qq.com';
$ Usuario->
correo
electrónico
$ Usuario-> save
También puede utilizar datos de asignación método de lotes:
();
$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> datos ([
'Nombre' => 'ThinkPHP', 'e-
mail' = > 'Thinkphp@qq.com'
]);
$ Usuario-> save ();
$ usor = Usuario
nuevo ([
=> 'ThinkPHP',
'Nombre => 'Thinkphp@qq.com'
' 'e-
mail' save
$ Usuario->
]);
();
Para filtrar el campo de datos de las tablas no son de datos, se puede utilizar:
$ usor = N e b r a s k aw Us u a r i o ( $ _ P O S T ) ;
// filtraciónpuestocampo no datos de la tabla de matriz de datos
$ Usuario-> allowField (verdadero) -> save ();
Si envía una misión al modelo, y desea especificar ciertos campos escritos por
externa, puede utilizar:
Obtiene incremento ID
Si desea obtener nuevo ID de la subasta de datos, puede utilizar las siguientes
maneras:
$ usuario = Nebraskaw u s u a r i o ;
$ Usuario-> = 'ThinkPHP';
nombre = 'Thinkphp@qq.com';
$ Usuario->
correo
electrónico
$ Usuario-> save
();
// Obtener
Tenga en cuenta la que este modelo es la obtención de la clave principal real si su
subastaech IDo $
clave
U s u aprimaria
rio-> no es la identificación, pero user_id, a continuación, ser realistas
I d e n t i f i c a cde
Identificación i ó nla
; subasta se convierte en la siguiente:
$ usuario = Nebraskaw u s u a r i o ;
$ Usuario-> = 'ThinkPHP';
nombre = 'Thinkphp@qq.com';
$ Usuario->
correo
electrónico
echo $ U s u a r i o - >
u
$ sUsuario->
e r _ i d ; save
();
// Obtener
Tenga cuidado la de no añadir datos múltiples veces en la misma instancia de la misma,
subastaidentifi
si necesita
cación
agregar muchas veces, puede utilizar las siguientes partes
tipo:
$ usuario = Nebraskaw u s u a r i o ;
$ Usuario-> = 'ThinkPHP';
nombre = 'Thinkphp@qq.com';
$ Usuario->
correo = 'Onethink';
electrónico = 'Onethink@qq.com';
El segundo
$ Usuario->
// nuevo comienzo debe
save
ser
(); utilizado de la siguiente manera
$
$ Usuario->
Usuario->isUpdate (falso) -> save
();
nombre
Añadir datos múltiples
$ Usuario->
correo
Lotes de apoyo complemento, se puede utilizar:
electrónico
método Añadir saveAll devuelve los datos que contienen el nuevo modelo (con ID
incremento) conjunto de datos (matriz).
V5.0.13+ versión, saveAll Por el método del tipo de retorno del modelo
resultSetType Propiedades de impacto (puede devolver datos objeto
establecer).
saveAll nuevo método datos de identificación automática de datos por defecto que
tenga que añadir o operación de actualización, cuando los datos existen en la
clave primaria
Cuando se considera la operación de actualización, si necesita datos con una clave
primaria nuevo lote, se pueden utilizar las siguientes maneras:
$ usor = N e b r a s k aw us u a r i o ;
$ List = [
[ 'Id' => 1, ' N o m b r e ' = > ' T h i n k P H P ' , 'Correo electrónico' =>
'thinkphp@qq.com'],
[ 'Id' => 2, ' N o m b r e ' = > ' o n e t h i n k ' , 'Correo electrónico' =>
'onethink@qq.com'],
];
$ Usuario-> saveAll (lista $, f a l s e ) ;
método estático
También puede llamar directamente al estática crean método crea y escribe:
$ usor = U s u a r i o : : c r e a t e
( [ ' n o m b r e ' =>
'ThinkPHP',
'Correo electrónico' = > 'Thinkphp@qq.com'
]);
echo $ U s u a r i o - >
nombre; echo $
Usuario-> correo
electrónico;
echo $ U s u a r i o - > I d en t i f i c a c i ó n ; / / Obtener la subastaidentificación
Guardar método es diferentes manos, crear método devuelve la instancia actual del
modelo de objetos.
ayudante
Función de ayuda proporciona un sistema modelo para el modelo instanciado rápido
y implementa utilizando una única forma de realización, por ejemplo:
Utilice este - 285 -
documento en
viendo las nubes
construcción de
nue
vo
$ Usuario-> save
();
O dar volumen:
actualización
edición ajuste
5.0.13 saveAll métodos de apoyo isUpdate
5.0.10 métodos
agrega de actualización
modelo setInc mano setDec
método
Buscar y actualizar
Después de la eliminación de los datos, cambie el campo después de la actualización
de datos.
$ usor = U s u a r i o : : g e t ( 1 ) ;
$ Usuario-> name = ' T h i n k P H P ' ;
$ Usuario-> email = 'Thinkphp@qq.com';
$ Usuario-> save ();
$ usor = N e b r a s k aw us u a r i o ;
// S A V eUn método para la condición actualización segundo parámetro
$ Usuario-> Guardar ([
'Nombre' => ' T h i n k P H P ' , ' e -
m a i l ' = > 'Thinkphp@qq.com'
], [ 'Id' = > 1 ] ) ;
Las dos formas anteriores para actualizar los datos, que no son datos, para filtrar el
campo de tabla de datos, se pueden usar:
$ usor = N e b r a s k aw Us u a r i o ( ) ;
// filtraciónpuestocampo no datos de la tabla de matriz de datos
$ Usuario-> allowField (verdadero) -> save ($ _POST [ 'id' = > 1 ] ) ;
Si envía una misión al modelo, y desea especificar ciertos campos escritos por
externa, puede utilizar:
$ usor = N e b r a s k aw Us u a r i o ( ) ;
// P O S tSólo la matriznombreye-mailLos campos se escriben en
$ Usuario-> allowField ([ 'nombre', 'email']) -> Guardar (POST $ _, [ ' I d ' = > 1 ] ) ;
$ usor = N e b r a s k aw us u a r i o ;
$ List = [
[ 'Id' => 1, ' N o m b r e ' = > ' T h i n k P H P ' , 'Correo electrónico' =>
'thinkphp@qq.com'],
[ 'Id' => 2, ' N o m b r e ' = > ' o n e t h i n k ' , 'Correo electrónico' =>
'onethink@qq.com']
];
$ Usuario-> saveAll (lista $);
V5.0.13 + versión, puede utilizar los siguientes métodos para forzar una
instrucción de actualización en lugar de nuevas operaciones (Eugene
Adaptado al caso de la clave principal compuesto).
$ usor = N e b r a s k aw us u a r i o ;
$ List = [
[ 'Id' => 1, ' N o m b r e ' = > ' T h i n k P H P ' , 'Correo electrónico' =>
'thinkphp@qq.com'],
[ 'Id' => 2, ' N o m b r e ' = > ' o n e t h i n k ' , 'Correo electrónico' =>
'onethink@qq.com']
];
$ Usuario-> isUpdate () -> saveAll (lista $);
Actualizar los datos de la clase de base de datos
Cuando es necesario, también puede utilizar los objetos de base de datos para
actualizar los datos directamente, pero no va a ser capaz de utilizar el modelo de
eventos de energía
Puede.
$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> donde ( 'id', 1 )
-> actualización ([ 'nombre' = > ' T h i n k P H P ' ] ) ;
O usar:
$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> actualización ([ 'id' = > 1 , ' N o m br e ' = > ' T h i n k P H P ' ] ) ;
O usar:
cierre de actualización
Los cierres pueden funcionar condiciones de actualización más complejos, por
ejemplo:
$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> Guardar ([ 'nombre' = > ' T h i n k P H P ' ] , l a f u n c i ó n ( $ c o n s u l t a )
// actualizaciónstatusvalor1 yidentificaciónmás que10los datos
$ Query-> donde ( 'status', 1 ) - > d o n d e ( ' i d ' , ' > ' , T e n ) ;
});
La identificación automática
Hemos visto Ll, nuevos métodos de actualización de modelo son la mano
Guardar método, el sistema tiene un conjunto de reglas para identificar el valor
predeterminado actual
Los datos necesita ser actualizado o añadido.
borrar
edició actualizaciones
n
5.0.9 método destroy pasa una cadena vacía manos vacías
de la matriz no hará ningún supresiones
Eliminar el modelo actual
Eliminar el modelo de datos, se puede llamar al método de eliminación después
de instancias.
$ usor = U s u a r i o : : g e t ( 1 ) ;
$ Usuario-> delete ();
Eliminación
Usar una matriz borrar condiciones, tales como:
investigación
$ usor = N e b r a s k aw Us u a r i o ( ) ;
// Consultar una sola datos
$ Usuario-> donde ( 'nombre', ' T h i n k P H P ' )
-> find ();
$ List = U s u a r i o : : t o d a s ( [ 1 , 2 , 3 ] ) ;
foreach ($ list u n a s $ C l a v e = >
$ usuario) echo $ Usuario-
> nombre;
}
// El uso de matrices de investigación
$ List = U s u a r i o : : t o d a s ( [ ' s t a t u s ' = > 1 ] ) ;
// Utilice una investigación de cierre
$ List = U s u a r i o : : t o d a s ( f u n c t i o n ( $ c o n s u l t a )
$ Query-> donde ( 'status', 1 ) - > l í m i t e ( 3 ) - > o r d e n ( ' i d ' , ' A s c ' ) ;
});
foreach ($ list u n a s $ C l a v e = >
$ usuario) echo $ Usuario-
> nombre;
}
O $llame
usoral=método
N e b r a s kde
aw consulta
Us u a r i o a
( )partir
; del modelo de
// conjuntos de datos de consulta
$ Usuario-> donde ( 'nombre', ' T h i n k P H P ' )
-> límite (10)
instancias
-> orden ( 'id', ' D e s c r i p c i ó n ' )
-> seleccionar ();
nosotrose p e n s a r \ Mo d e l o ;
class u s o r a m p l i a r s m o d e l o
consulta dinámica
Apoyar los métodos de consulta dinámica, tales como:
Más uso lote puede referirse a consultar la parte de datos de la base de datos.
caché de consultas
El tercer método de parámetros de la mano todos consiguen método indica si la
caché de consultas, o establecer el ID de caché.
Dado que el segundo parámetro está asociado con una carga pre-definida,
V5.0.6+ Versión, se puede pasar directamente a la verdadera segundo
parámetro que permite almacenamiento en caché.
agr
ega
ción
En el modelo también se puede llamar a las consultas a la base del proceso de
polimerización, tales como:
métod explicación
o
contar El número de las estadísticas, los
máx parámetros estadísticos
Obtener parámetro para el máximo
estadístico nombre adel
campo (opcional)
nombre
min Obtener del campo (requerido)
parámetros estadísticos mínimos
avg nombres de campo (debe)
Obtener parámetros estadísticos promedio
suma nombres
Salir, a losde campo (debe)
parámetros estadísticos del
nombre del campo (requerido)
llamadas estático:
llamada dinámica:
$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> count ();
$ Usuario-> donde ( 'status', '>', 0) -> count ();
$ Usuario-> donde ( 'status', 1) -> avg ( 'puntuación');
$ Usuario-> max ( 'puntuación');
adquiridor
edición actualizaciones
5.0.10 El método de aumentar el adquirente
tercio datos de parámetros asociados
adquiridor
con el entrante
rol adquirente se procesa obtener automáticamente el valor después de los datos,
por ejemplo, tenemos que convertir el valor de estado,
Se puede utilizar:
class u s o r a m p l i a r s m o d e l o
Public f u n c i o n g e t S ta t u s A t t r ( v a l o r d e $ )
$ usor = U s u a r i o : : g e t ( 1 ) ;
echo $ U s u a r i o - > E s ta d o ; / / Por ejemplo salidaHnormal"
Adquirente también puede definir la tabla de datos de campo no existe, por ejemplo:
class u s o r a m p l i a r s m o d e l o
Public f u n c i o n g e t S ta t u s T e x t A t t r ( v a l o r $ , $ d a t o s )
método adquirente del segundo parámetro se pasa a todas matriz de datos actual.
$ usor = U s u a r i o : : g e t ( 1 ) ;
echo $ U s u a r i o - > S T AT U S _ T E X T ; / / Por ejemplo salidaHnormal"
$ usor = U s u a r i o : : g e t ( 1 ) ;
// Obtener todos los datos adquiridos
dump ($ usuario-> toArray ());
$ usor = U s u a r i o : : g e t ( 1 ) ;
// Con la adquisición de campo adquirente
echo $ U s u a r i o - > E s ta d o ;
// La obtención de datos de campo primas
echo $ U s u a r i o - > g e tD a t a ( ' s t a t u s ' ) ;
// Obtener todos los datos originales
dump ($ usuario-> getData ());
modificador
edición actualizaciones
5.0.10 El método de añadir una tercera
parámetros de datos de modificación
modificador
asociada en
modificador de Acción se puede hacer de forma automática en el momento de la
asignación de procesamiento de conversión de datos, por ejemplo:
class u s o r a m p l i a r s m o d e l o
Public f u n c i o n s e t N am e A t t r ( v a l o r d e $ )
return s t r t o l o w e r ( $ v a l u e ) ;
}
}
$ usor = N e b r a s k aw Us u a r i o ( ) ;
$ Usuario-> name = ' T hi n k P H P ' ;
$ Usuario-> save ();
echo $ U s u a r i o - > n o mb r e ; / / T h i n k P H P
class u s o r a m p l i a r s m o d e l o
Public f u n c i o n s e t N am e A t t r ( v a l o r $ , $ d a t o s )
return s e r i a l i z a r ( $ d a t a ) ;
}
}
$ usor = N e b r a s k aw Us u a r i o ( ) ;
$ usor = N e b r a s k aw Us u a r i o ( ) ;
$ Datos [ 'nombre'] = 'T h i n k P H P ' ;
$ Datos [ 'email'] = 'Thinkphp@qq.com';
$ Usuario-> Guardar ($ data);
echo $ U s u a r i o - > n o mb r e ; / / T h i n k P H P
Marca de tiempo
edición ajuste
5.0.10 adición autoWriteTimestamp Dinámica de Tiempo
5.0.6 Conjunto
El aumentocampo paradeescribir
del campo la hora de salida se ajusta
5.0.5 automáticamente
apoyo verificados verificado
sello automático salida de campo de
fórmula
autoWriteTimestamp propiedad de soporte se
establece en la fecha y hora del nombre de la clase
El sistema es compatible con campo de marca de tiempo de actualización
automática escrita a mano la creación, hay dos maneras de configurar el apoyo.
El segundo está dispuesto directamente dentro de las clases del modelo separadas:
protected $ A u t o W r i te T i m e s t a m p = v e r d a d e r a ;
$ usor = N e b r a s k aw Us u a r i o ( ) ;
$ Usuario-> name = ' T hi n k P H P ' ;
$ Usuario-> save ();
echo $ U s u a r i o - > C R EA T E _ T I M E ; / / La salida similar 01/10/20162 1 4: 2 0 : 1 0
echo $ U s u a r i o - > u p da t e _ t i m e ; / / La salida similar 01/10/20162 1 4: 2 0 : 1 0
class u s o r a m p l i a r s m o d e l o
$ usor = N e b r a s k aw Us u a r i o ( ) ;
$ Usuario-> name = ' T hi n k P H P ' ;
$ Usuario-> save ();
echo $ U s u a r i o - > c r ea t e _ a t ; / / La salida similar 01/10/20162 1 4 :2 0 : 1 0
echo $ U s u a r i o - > u p da t e _ a t ; / / La salida similar 01/10/20162 1 4 :2 0 : 1 0
class u s o r a m p l i a r s m o d e l o
Si el campo de marca de forma automática sin ningún tipo de escrito, usted puede
apagar escribir automáticamente la función de indicación de la hora, de la siguiente
manera:
Utilice este - 301 -
documento en
viendo las nubes
construcción de
Marca
de
tiemp
o class u s o r a m p l i a r s m o d e l o
protected $ A u t o W r i te T i m e s t a m p =
} falsa;
La venta
único
campo
Vender el terreno para proteger algunos valores de los campos especiales no se
cambian, el valor de este campo una vez por escrito, no se puede cambiar. para
Función sólo venden campo, sólo tenemos que definir la propiedad de sólo lectura
modelo:
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
$ usor = U s u a r i o : : g e t ( 5 ) ;
// Cambiar el valor de ciertos campos
$ Usuario-> name = ' T OP T h i n k ' ;
$ Usuario-> email = 'Topthink@gmail.com';
$ Usuario-> Address = 'Shanghai distrito de Jing'an';
// Guardar los cambios de datos de usuario
$ Usuario-> save ();
suave borrar
suave borrar
edició ajuste
n
5.0.2 deleteTime La definición de
propiedad para no estático
En las cabezas de página reales de datos de uso frecuente operación de eliminación
puede causar problemas de rendimiento, se elimina el papel de los datos eliminado
temporalmente plus
Además de marcar, y no es realmente eliminado, sino también por el tiempo
necesario para recuperar los datos.
namespace a p l i c a c i ón \
pensar \ Modelo;
nosotrose r a s g o s \ mo d e l o \ S o f t D e l e t e ;
class u s o r a m p l i a r s m o d e l o
nosotrose S o f t D e l e t e;
protected $ D e l e t e T im e = ' D e l e t e _ t i m e ' ;
}
con la conversión de tipos, tablas de datos se recomienda para todos los tipos
// suave borrar
Usuario :: destroy (1);
// eliminar real
Usuario :: destroy (1, true);
$ usor = U s u a r i o : : g e t ( 1 ) ;
// suave borrar
$ Usuario-> delete ();
// eliminar real
tipo de conversión
class u s o r a m p l i a r s
modelo
protected $ = [
Tipo => 'Integer',
'Estado' => 'Float',
'puntuació => 'datetime',
n' => 'array',
'cumpleaño
} s'
'informaci
ón'
];
Los siguientes son ejemplos de tipos de conversión automática:
$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> status = ' 1 ' ;
$ Usuario-> SCORe = '9 0 0 , 5 0 ' ;
$ Usuario-> birthday = ' 0 5 / 0 1 / 2 0 1 5 ' ;
$ Usuario-> info = [ 'A ' = > 1 , ' b ' = > 2 ] ;
$ Usuario-> save ();
var_dump ($ usuario-> Estado); / / e n t 1
var_dump ($ usuario-> puntuación); / /
Float 90,5;
var_dump ($ usuario-> cumpleaños); // s t r i ng ' 2 0 1 5 - 0 5 - 0 1 0 0 : 0 0 : 0 0
'var_dump ($ usuario-> info); // array (Tamaño = 2) 'Un' => ent 1
'B' = > e n t 2
Las cadenas de consulta de base de datos por defecto son sacados del tipo de datos,
si es necesario convertir en fiel a su tipo, es necesario establecer, rama
Mantenga tipo de paquete de inserción del tipo:
entero
Después de ajustar número entero (número entero), el campo empieza a escribir el
resultado va a ser convertidos automáticamente a un número entero.
flota
Eldor
valor de este campo es para empezar a escribir cuando la salida se convierte
automáticamente a flotar.
form
ación
array Si se establece en fundido tipo de matriz, el sistema va a escribir
automáticamente los datos se codifica fórmula cadena JSON Verified
objeto
Valor del campo en el momento de la escritura codificada como cadena JSON de
forma automática, la salida se convierte automáticamente en StdClass de
Al igual.
serializa
r
Especifica el tipo de secuencia, los datos se escriben automáticamente a la
serialización y deserialización toma automáticamente la hora de vender.
JSO
N designado tipo, los datos se escriben automáticamente json_encode, y
JSON
automáticamente tomada en la venta
proceso json_decode.
fecha y
hora como un tipo de campo de marca de tiempo, entonces el valor de este
Designado
campo se generará de forma automática cuando la correspondiente escritura cuando
strtotime
Marca de tiempo, cuando la salida se convierte automáticamente a la definición del
atributo tiempo dateFormat fórmula cadena Ke, fórmula predeterminada Ke
Ymd H: i: s, Ke si realmente desea cambiar la fórmula, se puede definir de la
siguiente manera:
class u s o r a m p l i a r s m o d e l o
protected $ D a t e F o r ma t = ' Y / m
/protected
d'; $ = [
Tipo => 'Integer',
'Estado' => 'Flotar',
'puntuació => 'marca de
n' tiempo',
} 'cumpleaño
s'
];
O usado en el tipo de conversión definición:
$ usor = U s u a r i o : : f i n d ( 1 ) ;
echo $ U s u a r i o - > c u mp l e a ñ o s ; / / 0 5 / 0 1 / 2 0 1 5
fecha y
hora
Del mismo modo timestamp parte, excepto que el tiempo de comienzo de escritura
de venta de acceso a los datos se procesan automáticamente en un momento en
cadena de caracteres
Ymd H: i: s de fórmula Ke.
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
protected $ A u t o = [] ;
protected $ I n s e r t = [ E s t a d o d e ' I P ' , ' '
=> 1]; protected $ update = [
'Login_ip'];
protected f u n c i o n s et I p A t t r ( )
return s o l i c i t u d ( ) - > i p ( ) ;
}
En} los nuevos datos, la ip estatu El campo se ha completado o procesamiento
entregará s de forma automática.
$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> name = ' T hi n k P H P ' ;
$ Usuario-> save ();
echo $ U s u a r i o - > n o mb r e ; / /
ThinkPHP echo $ Usuario->
Estado; // 1
su búsqueda
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
protected f u n c i o n s co p e T h i n k p h p ( $ c o n s u l t a )
protected f u n c i o n s co p e A g e ( $ c o n s u l t a )
}
Puede consultar las siguientes condiciones:
// buscarnombreesthinkphpusuario
Usuario :: alcance ( 'ThinkPHP') -> find ();
// Buscar mayores de20de10usuarios
Usuario :: alcance ( 'edad') -> seleccione ();
// buscarnombreesthinkphpY los usuarios mayores de20de10usuarios
Usuario :: alcance ( 'ThinkPHP, edad') -> seleccione ();
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
protected f u n c i o n s co p e A g e A b o v e ( $ c o n s u l t a , $ L o w e s t _ a g e )
$ usor = N e b r a s k aw us u a r i o ;
// buscarnombreesthinkphpusuario
$ Usuario-> ThinkPHP () -> get ();
// Buscar mayores de20de10usuarios
$ Usuario-> edad () -> all ();
// buscarnombreesthinkphpY los usuarios mayores de20de10usuarios
$ Usuario-> ThinkPHP () -> edad () -> all ();
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
$ usor = U s u a r i o : : g e t ( 1 ) ;
status = 1 A N D y o d = 1
modelo jerárquico
Capa de datos: app \ index \ \ Los datos de usuario modelo para la definición de la
mano la verificación automática de la mano correspondiente de forma automática los
datos de acceso
interfaz
capas lógicas: app \ índice \ lógica de la capa \ usuario define la lógica de negocio
para los servicios asociados con el usuario: app \ index \ servicio \ Usuario utiliza para
definir un servicios relacionados interfaz de usuario
modelo \ User.php
namespace a p l i c a c i ón \
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
}
Los ejemplos de métodos: \ pensar \ cargador :: model ( 'Usuario')
namespace a p l i c a c i ón \
i n d e x \ l óg i c a ; n o s o t r o s e
pensar \ Modelo;
class u s o r a m p l i a r s m o d e l o
namespace a p l i c a c i ón \ i n d e x
\ Modelo;
class u s o r a m p l i a r s m o d e l o
}
Los ejemplos de métodos: \ pensar \ cargador :: model ( 'Usuario', 'servicio');