You are on page 1of 485

directorio

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 -2-


documento en
viendo las nubes
construcción de
configuración
de tipo Ke se
carga
dinámicament
e configurado
vender
independient
emente
podido
recuperar la
configuración
variable de
entorno de
configuración
Configurar
ámbitos
enruta
miento
Las
reglas
de
enruta
miento
modo
de
enruta
miento
definen
un
volume
n
variable
registra
do una
combin
ación
Utilice este -3-
documento en
viendo las nubes
construcción de
de
direcció
n de
encami
namient
o
variable
de
parámet
ro de
enruta
miento
enruta
miento
de
recursos
de
encami
namient
o
rápido

Utilice este -4-


documento en
viendo las nubes
construcción de
alias de
enrutamiento
enrutar
paquetes
de MISS
soporte
para
cierres
de
enrutami
ento de
enrutami
ento
dominio
de unión
generar
modelo
de unión
URL de
enrutami
ento
control
ador
Pre-definido
controlador
inicializa el
controlador
salta
operación de
la mano No
controlador
de operación
de redirección
Controller
Controller
jerárquica
Utilice este -5-
documento en
viendo las nubes
construcción de
multinivel
Controller
Rest
Posicionamient
o automático
Controlador de
Recursos
controlador
solicitu
d
de entrada
variable
información
de solicitud
de cambio de
variable
solicita el tipo
de solicitud
método de
cabeceras
HTTP seudo-
estática
inyectables
parámetro
inyección
propiedad
petición
inyección de
dependencia
de
antememoria
de ligadura
enmascaramie
nto
base de
datos
Utilice este -6-
documento en
viendo las nubes
construcción de
conexión de
base de uso
básico

Utilice este -7-


documento en
viendo las nubes
construcción de
generador de
consultas
Adición
de
datos
de
actualiz
ación
de
datos
de
consult
a de
datos
borrar
método
consult
a de
datos
encade
namient
o
sintaxis
de la
consult
a
donde
tabla
de
alias
campo
de
grupo
de
página
s límite
Utilice este -8-
documento en
viendo las nubes
construcción de
para
tener
Une
Unión
caché
bloque
o
distinta
comentar
io
partición
fetchSql
fuerza
bind
estricta
failException
secuencia
tiempo
de
consulta
agregada
Búsqueda
Avanzada
consultas
nativas
subconsul
ta

Utilice este -9-


documento en
viendo las nubes
construcción de
consulta de
eventos
base de datos
SQL
almacenados
conjuntos de
datos monitor
de operación
transacción
procedimient
o distribuido
modelo
Definir nuevo
modelo de
inicialización
Actualiz
ar
Borrar
consult
a
agrega
ndo
modific
adores
Get
marca
de
tiempo
El campo sólo
venden
conversión de
tipo de datos
eliminado
temporalment
e para
completar la
Utilice este - 10
documento en -
viendo las nubes
construcción de
gama de
modelos
jerárquicos
consulta
convertido
acceso a una
matriz evento
JSON
serialización
Mano
conexo
de
asociaci
ón
Muchas
asociacio
nes de
múltiples
remota
atributos
dinámicos
asociados
polimórfica
precarga
muchas
estadísticas
de
asociación
asociado
modelo de
agregación

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 -6-


documento en
viendo las nubes
construcción de
autorización
por escrito
la depuración de
errores mano
Depurar el
manejo modo
de excepción
lanzada
seguimiento
de
depuración
de
depuración
variable de
ajuste del
rendimiento
de la
depuración
de SQL
depuración
remota 404
páginas
verificac
ión
reglas de
validación
validador de
error de
validación de
autenticación
de mensajes
escenario de
validación de
modelo de
controlador
integrado de
Utilice este -7-
documento en
viendo las nubes
construcción de
reglas para
llamar a un
token de
forma estática
segurid
ad
Introduzca la
seguridad de
la base de
datos de
seguridad
recomendacio
nes de
seguridad E
subidos muy
seguras
página
Varios
pestaña
Sesión
caché
Cookie
para
cargar
un
código
multi-
idioma
procesamient
o de archivos
de
procesamient
o de
imágenes

Utilice este -8-


documento en
viendo las nubes
construcción de
prueba de la
unidad
propag
ación
bibl
iote
ca
de
fun
cio
nes
de
co
mp
orta
mie
nto
del
con
duc
tor
compositor
paquete
tiempo
Base de datos
herramienta de
migración
Workerman
MongoDB
SAE
línea de
comando de
extensión de
etiqueta
Generación automática
de la biblioteca
Utilice este -9-
documento en
viendo las nubes
construcción de
estructura de directorios
de archivos para crear la
memoria caché de
clases biblioteca de
archivo de asignación de
generación de
enrutamiento para
borrar el archivo de la
memoria caché de
creación de archivos de
caché generar caché de
datos de campo de tabla
de línea de comandos
de configuración
personalizada
despleg
ar
Linux entorno
de
alojamiento
web entorno
de
alojamiento
reescritura de
URL
apéndic
e
Constan
te
función
de
referenc
ia
Referen
cia del
asistent
Utilice este - 10
documento en -
viendo las nubes
construcción de
e de
configur
ación
para
actualiz
ar el
registro
de
actualiz
ación
de
orientac
ión

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)

marco de alto rendimiento ThinkPHP V5.0-- para


el desarrollo y diseño de API

versión V5.0 deSiete ganado nubecomunicado de patrocinio exclusivo

ThinkPHP es un código abierto, ligero marco de desarrollo de PHP orientado a


objetos rápida y sencilla, para simplificar la aplicación WEB mano el desarrollo de
aplicaciones desarrollo de la empresa ágil y nacimiento. ThinkPHP desde sus inicios
se ha adherido principios de diseño sencillo y funcional, manteniendo una excelente
mano de actuación para el código simple, pero también se centran en la facilidad
de uso. Siga acuerdo de licencia de código abierto Apache 2 liberado, que significa
que se puede utilizar para ThinkPHP libre, e incluso le permite desarrollar
aplicaciones basadas en código abierto ThinkPHPO publicar grano de producción /
ventas comerciales.

ThinkPHP5.0 versión es una versión reconstruida de la mano la subversión, con


un nuevo marco de pensamiento, es más en las nuevas características de PHP ,
Optimizar el núcleo / reducir la dependencia, para lograr una carga
verdaderamente perezoso, el apoyo compositor y hecho un montón de
optimización para el desarrollo de la API, el prospecto de enrutamiento, la tala, la
excepción, modelo, base de datos, motor de plantillas s módulo de verificación
de la mano se han reconstruido, no es adecuado para el propósito de actualizar
Utilice este - 12
el 3.2 existente,
documento en por favor considere cuidadosamente con fines comerciales -
viendo las nubes
página de actualización, pero sin duda la primera opción para el propósito de la
construcción de
nueva página
(WEB si el desarrollo de la API).
pref
Características principales:
acio

Especificación: Siga PSR-2, PSR-4 especificación, Compositor y la unidad de


soporte de pruebas;
mecanismo de detección de errores de seguridad rigurosa mano de
excepción, la información de registro detallado para su escolta desarrollo;
flexibles:: estricta reducción nuclear / dependencia, se extienden más flexible
y conveniente, compatible con las extensiones de instrucción de línea de
comandos; API amigable: RESTO mano Excelente rendimiento apoyo, la
depuración remota, mejor desarrollo apoyo API; eficiente: la carga diferida, y
el enrutamiento, mecanismo de caché configurado para cargar
automáticamente la mano;

Utilice este - 13
documento en -
viendo las nubes
construcción de
pref
acio

ORM: base de datos, modelo relacional y la reconstrucción, el apoyo MongoDB;

La última versión es V5.0.15 vistaRegistro de


actualizaciónmanoInstrucciones de Actualización.
Soporte a usuarios ThinkPHP5 favor Ll github Danos una estrella ""

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.

Información principal actualizada sobre ThinkPHP artículo de la


página y el engranaje, visite la página principal del proyecto
ThinkPHP estación http://www.thinkphp.cn.

ThinkPHP grupo de bloques de texto con derechos de autor de este documento en


todos, realmente se detiene y el contenido descrito por las leyes de protección de
copyright La protección, la copia ilegal de este documento en cualquier forma de

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!

Nuestros equipo de 10 años seguidos en la fabricación de incansables esfuerzos a


que se adhieran al código abierto y libre para usar la mano para ayudar a
desarrolladores más

Utilice este - 11 -
documento en
viendo las nubes
construcción de
pref
acio

Conveniente para el rápido desarrollo de aplicaciones web, si usted expresa el


reconocimiento de nuestros logros y que sentimos por su ayuda
Dispuesto a aceptar donaciones

de todos los lados "" donación

Alipay fueron escaneados

utilizando un teléfono móvil

venta Lectura recomendada (el cristal oficial)


"ThinkPHP5.0 Introducción"Se trata de aprender a dominar tutorial de la
entrada ThinkPHP5.0 dedo de la mano rara s para los usuarios novatos enfoque
progresivo da un uso detallado (se recomienda el principiante al leer por
primera vez la venta de inicio rápido después de la investigación
completamente desarrollado parte Libro).

"ThinkPHP5.0 Guía de enrutamiento completa"Esta es una guía completa sobre el

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.

"ThinkPHP5.0 controlador competentes de entrada Ll"Utilice el controlador a la


línea principal, a través de 10 sobre el contenido de un análisis exhaustivo La
función de controlador de ThinkPHP 5.0 ciclo de vida es la forma en la solicitud de
adquisición, validación de datos, procesamiento de negocios, manejo de
excepciones, plantilla de representación, y la forma de la mano del mediodía debe
extensión comportamiento de salida.

Utilice este - 13 -
documento en
viendo las nubes
construcción de
pref
acio

"ThinkPHP5.0 modelo de base de datos de la mano de profundidad"Esta es una


guía completa sobre modelo de la mano el uso de 5,0 base de datos,
A través de la utilización de acercamiento progresivo manera familiar y
comprensible para explicar el uso de la mano a mano modelo de base habilidades.

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

ThinkPHP5 requisitos ambientales son los siguientes:

PHP >= 5.4.0


PDO Extensiones de
PHP mbstring PHP
Extension PHP CURL
Extensión
Yan Ke hablando, ThinkPHP ningún proceso de instalación, aquí está el bastidor
de instalación real de ThinkPHP
WEB entorno de ejecución (con la condición de que su entorno ya se está
ejecutando WEB OK), puede haber varias maneras de obtener la instalación manos
ThinkPHP.

, El sitio web oficial para descargar e instalar


ThinkPHP obtener una gran cantidad de maneras, el sitio web oficial
(http://thinkphp.cn) Proporcionaversión estableO con extensión
versión de descarga completa.

versión de descarga indefinida es la última versión de la página web oficial, es


mantener la adquisición de la versión GIT de la versión actualizada.
Dos, la instalación Compositor
ThinkPHP5 soporta la instalación Compositor, si no se ha instalado
Compositor, puede
búsqueda compositor de instalaciónLinux
El mamác O S Puede ejecutar el siguiente
x
método de instalación. en la mano comando:

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

En Windows, es necesario descargar y ejecutar Compositor-Setup.exe.

Si tiene algún problema o querrá más profundo estudio Compositor, consulte


documentos compositor (Inglés), compositor chino.
Utilice este - 16 -
documento en
viendo las nubes
construcción de
ThinkPHP
instalación

Si ya ha Asegúrese de que está utilizando la última versión,


instalado composit puede utilizar
or
componerr actualizaciones
a ut o- de mando composit Para la versión más reciente.
a c tu al iz ac i ón or
A continuación, la siguiente línea de comando interruptor Ll el directorio raíz del
servidor web y ejecutar el siguiente comando:

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

Expreso instalar la versión más reciente 5.0.

Si aparece un mensaje de error, siga las instrucciones o referenciadocumentos chinos


compositor.

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:

Las páginas de aplicación: https://github.com/top-think/think


Core / marco: https://github.com/top-think/framework

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

La razón de la aplicación de mano diseñado separación nuclear / almacén, para


apoyar componerr Actualización de núcleo / marco individual.
En primer lugar clonado Descargar páginas de aplicación Almacén

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

A continuación, cambie el directorio TP5 LL y clonado Almacén núcleo / marco:

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

Si no está familiarizado con la línea de comandos git, se puede utilizar cualquier


número de operación del cliente GIT, que no se describe en detalle.

No importa qué manera se obtiene el marco ThinkPHP, ahora sólo tiene que

hacer el paso final para verificar el funcionamiento normal. Introduzca la

dirección en su navegador:

http: // localhost / TP5 / public /

Si la salida del navegador se muestra a continuación:

Felicitaciones, ahora han completado la instalación de ThinkPHP5!

Si un entorno Mac o Linux, asegúreseseguro runtime No se puede escribir el


directorio
Si usted no puede funcionar correctamente y mostrar ThinkPHP página de
bienvenida, entonces el próximo cheque de su entorno de servidor:

PHP 5.4 o posterior (Nota: PHP5.4dev versión de la mano PHP6 no es


Utilice este - 20 -
documento en
viendo las nubes
construcción de
ThinkPHP
instalación
compatible)
Si el servidor web normal inicio

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:

directorio de archivos de la mano


Directorio minúsculas + subrayado;
Biblioteca, una función de sistema de archivos con el sufijo .php; nombres de
clase son archivo de definición de espacio de nombres y la ruta del archivo de la
biblioteca de espacio de nombres en el camino de la mano de actuación; archivo
de clase se denomina método de joroba (primera letra en mayúscula), el
verdadero archivo de E + minúsculas guión bajo el nombre; MingShou nombre
de archivo de clase clase permanece activado, el sistema utilizando el método
designado joroba (iniciales);

Clase función de la mano, los nombres de atributos


Después de la clase llamada utilizando el método de joroba (con mayúscula),
por ejemplo, usuario, UserType, no hay necesidad de añadir un valor
predeterminado
Prefijo, como UserController directa debe ser nombrado usuario; función de
nombrar en minúsculas mano subrayado (letra minúscula) forma, por ejemplo,
get_client_ip
;
Naming método utilizando el método de joroba (primera letra
minúscula), por ejemplo, getUserName; joroba propiedades con nombre
usando el método (primera letra minúscula), por ejemplo nombreTabla,
ejemplo, la función de doble subrayado M "o método comienza como
métodos mágicos, por ejemplo , Call y autocarga,;

configuración de la mano Constant


Nombre de constante en mayúsculas subrayó la mano, por ejemplo
APP_PATH mano THINK_PATH;
Configuración de parámetros url_route_on url_convert mano;
nombre en letras minúsculas subrayó
la mano, por ejemplo,
Utilice este - 23 -
documento en
viendo las nubes
construcción de
Desarrol
lo de
normas

Hoja de datos de campo de la mano


Hoja de datos mano subrayado campos se denominan en minúsculas y tener
cuidado de no desplegar los nombres que empiezan con un guión, por ejemplo,
think_user campo de tabla nombre_usuario parte, no recomienda el uso
de mano de joroba chino como un nombre de campo de la
tabla de datos.

Biblioteca de clases de aplicación espacios de nombres


especificación
Aplicación espacio de nombres raíz de la biblioteca para la aplicación del sistema
(no se recomienda cambiar los parámetros de configuración se puede ajustar
más app_namespace
Cambio, la versión V5.0.8 comenzó APP_NAMESPACE definiciones de
constantes);
Por ejemplo: app \ index \ controlador \ app Índice de mano \ index \
modelo \ Usuario.
Evitar el uso de palabras reservadas PHP (véase la lista de palabras reservadas
http://php.net/manual/zh/reserved.keywords.php ) Como una constante, nombres de los
métodos de clase de mano, y

Utilice este - 24 -
documento en
viendo las nubes
construcción de
Desarrol
lo de
normas

Nombrando espacio de nombres, si no causará errores del sistema.

Utilice este - 25 -
documento en
viendo las nubes
construcción de
Estructu
ra de
directori
os

Estructura de directorios

Después de descargar la última versión del marco, descomprimir directorio Llweb, se


puede ver Ll estructura de directorios original es el siguiente:

proyecto directorio de implementación de aplicaciones


aplicación Bu Directorio de aplicación (ajustable)
BU común catálogo de módulos pública (se puede cambiar)
índice Bu Directorio de módulo(Puede cambiar)
Bu config.php archivo de configuración del módulo
common.php Bu archivo de función del módulo
controlador Bu controlador Directorios
modelo BU de modelos
Ver BU Ver catálogo
L Bu ... Más catálogo de la biblioteca
command.php Bu archivo de configuración de la herramienta de línea de
comandos
common.php Bu archivos (función) de aplicación Públicas
Bu config.php Perfil de aplicación (público)
database.php Bu archivo de configuración de base de datos
tags.php Bu archivo de extensión definición comportamiento de las
aplicaciones
route.php L BU Perfiles de enrutamiento
Bu extender catálogo de la biblioteca extendida (definir)
Bu PublicWeb directorio de implementación (Acceso externo Catálogo)
estática Bu directorio de almacenamiento recurso estático(CSS, JS,
imagen)
Bu index.php población archivos de aplicaciones
router.php Bu archivo de prueba rápida
.htaccess L BU para apache reescribiendo
Bu tiempo de ejecución Tiempo de ejecución directorio de la aplicación (se puede
escribir, se puede ajustar)
proveedor Bu directorio de bibliotecas de terceros (compositor)
ThinkPHP Bu directorio System Frame
Bu lang directorio de paquete de idioma
biblioteca BU Marco catálogo de la biblioteca central
BU pensar pensar directorio de paquetes Biblioteca
rasgos L BU sistema rasgos directorio
TPL Bu directorio de plantilla del sistema
.htaccess Bu para apache reescribiendo
Bu .travis.ymlCI definición del archivo
base.php Bu archivos básicos de definición
Bu composer.json compositor definición del archivo
console.php Bu archivos de consola de población
convention.php Bu Perfil Convención
helper.php Bu archivo de ayuda (opcional)
Bu license.txt documentación autorizada
phpunit.xml Bu Perfiles de pruebas unitarias
Bu README.mdREADME expediente
start.php L BU archivo de arranque marco
build.php Bu generar automáticamente el archivo de definición (Referencia)
Utilice este - 20 -
documento en
viendo las nubes
construcción de
Estructu
ra de
Bu composer.json compositor definición del archivo
directori
Bu license.txt documentación autorizada
os Bu README.mdREADME expediente
BU pensar Archivo población de línea de comandos

Utilice este - 20 -
documento en
viendo las nubes
construcción de
Estructu
ra de
directori
os

Si un entorno Mac o Linux, asegúreseseguro runtime No se puede escribir el


directorio
Recomendación 5.0 despliegue es el acceso del público al directorio de contenido
como un directorio web, directorio web que no sea el verdadero E son, por supuesto,
Debe modificarse camino público / index.php relevante. Si no se puede hacer Ll
este punto, recuerde que debe establecer permisos de acceso para proteger
directorio de archivos o añadir un listado de directorios.

router.php propio servidor web de soporte para PHP,


puede ser utilizado para probar rápidamente El
comando de arranque: php -S localhost: 8888
router.php

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.

Las manos sobre la estructura de directorio de nombres se pueden cambiar, la


estructura de directorios en especial se aplica realmente, en función de sus
parámetros de configuración del archivo de entrada de mano.

Debido ThinkPHP5.0 diseño arquitectónico de la estructura de directorios del


módulo conserva una gran flexibilidad, especialmente para un realmente existen
directorio de almacenamiento altamente personalizado, por lo que la estructura de
directorio anterior propuso una referencia solamente.

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

ThinkPHP5.0 aplicación basada en MVC (Modelo - Vista - Controlador) manera de


organizar.

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.

El acceso URL 5,0 por decisiones de enrutamiento, enrutamiento o cerrar el caso si


no hay coincidencia de enrutamiento se basa en:

http: //serverName/index.php(O de la población de otros archivos de la


aplicación)/módulo/controlador/operativo/ginseng

Después de algunos conceptos necesarios para entender a hacer a continuación, a


menudo puede ser referido en las páginas siguientes.

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.

Aplicación tiene sus propios perfiles separados, archivos públicos (función).

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

archivo de configuración de la aplicación:

'App_multi_module' = > falso,

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.

El controlador es responsable de recibir la solicitud y llama al proceso relacionado


con el modelo, y, finalmente, la salida a través de la vista. Yan Ke, el controlador no
debe ser demasiado de la lógica de negocio de procesamiento l.

De hecho, el controlador 5.0 se puede omitir, podemos directamente a través de la consulta de

enrutamiento la programación de un modelo o eucariota Ll sus clases para su procesamiento.

5.0 clase controlador más flexible, puede no necesitar para heredar cualquier
biblioteca de clases base.

Índice de clase controlador típico es como sigue:

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.

El siguiente es un método típico de funcionamiento de define Índice el


controlador, contiene dos métodos de operación:

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

El método de funcionamiento puede no utilizar ningún parámetro, los parámetros


opcionales si un no definido, este parámetro debe ser aprobada por una petición de
usuario
En, si la solicitud de URL, por lo general $ _GET o $ _POST manera aprobada.

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.

Modelo de clase no se le da acceso a la base de datos, sino también en el diseño de la arquitectura

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.

Ver archivos de plantilla por lo general tienen una serie correspondiente de


diferentes métodos dictadas controlador de operación, y el apoyo a conjunto
dinámico directorio de plantillas.

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:

// enapp_initUbicación conducta de reconocimiento Xin


\ Piense \ Gancho :: escuchar ( 'app_init');

A continuación, en algún lugar de comportamiento de unión:

// 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.

Los espacios de nombres


ThinkPHP5 utilizando un diseño de la mano de planta de la biblioteca de
espacios de nombres de archivos PHP, y de acuerdo con la automática PSR-4
especificación de carga.

Utilice este - 29 -
documento en
viendo las nubes
construcción de
ciclo de
vida

ciclo de vida

En esta parte hacemos más o menos l desembocadura del ciclo de vida de la


solicitud de aplicación ThinkPHP 5.0 con el fin de comprender todo el proceso de
ejecución para los desarrolladores.

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

entrada. Los archivos de entrada de código normalmente son

relativamente simples, código de entrada archivo ordinario es

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.

En general, no se recomienda añadir demasiado código en el archivo de la


aplicación en la entrada, especialmente la mano es realmente la lógica de negocio
código relacionado.

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:

Constant define el sistema de carga;


las variables de entorno de
Utilice este - 30 -
documento en
viendo las nubes
construcción de
ciclo de
vida
carga archivo de definición;
inscripción automática
mecanismo de carga; la
mano mecanismo de
registro de errores de
manejo de excepciones, el
perfil de la convención de
carga; ejecutar la aplicación;

documento de orientación start.php s va a llamar a la primera base de


base.php s documentos de orientación, algunas de las necesidades
especiales de los siguientes pueden ser directamente
S entrada en la guía s basado en archivos de documentos.

Si cambia el archivo predeterminado s entrada de guía en su archivo de aplicación,


se puede seguir el cambio se produzca flujo de ejecución

Utilice este - 31 -
documento en
viendo las nubes
construcción de
ciclo de
vida

De.

3, el registro es automáticamente cargado


El sistema llamará el cargador :: registrarse () método para registrar carga
automáticamente después de la finalización de este paso, están en conformidad
Biblioteca (prospecto Compositor bibliotecas de terceros dependientes de la carga)

se cargan automáticamente. El sistema se carga automáticamente por una parte

principal de los siguientes componentes:

1. sistema de registro método de carga


\ Pensar \ automática
cargador ::
autocarga
2. las definiciones de espacio de nombres del sistema de registro
3. Cargar el archivo de mapa biblioteca (si está presente)
4. Si hay compositor La instalación, el registro compositor cargará
automáticamente
5. registro ampliar directorios ampliado

La detección de una orden de

carga de la página

automáticamente la biblioteca

son: 1. si la biblioteca se

define el mapeo;

2. PSR-4 cargue automáticamente de detección;


3. PSR-0 detección de carga

automática; Se puede ver Ll, definir el

mapeo de la biblioteca es la más

eficiente.

4, el registro mecanismo excepción error mano


Error de ejecución :: Register () error de registro mecanismo de manejo de
excepciones mano.

Utilice este - 32 -
documento en
viendo las nubes
construcción de
ciclo de
vida
Se compone de tres partes:

Aplicaciones cerrar: pensar \ Error :: appShutdown


la manipulación de error: pensar \ error :: AppError
El manejo de excepciones: piensa \ Error :: appException

Inscríbete facilidad de uso método Close es interceptar algunos errores del sistema.

A lo largo de la vida del proceso de solicitud de aplicación, si se produce una


excepción o error grave dará lugar a la terminación anticipada de la aplicación, y el
mediodía anormal de la mano debe ser la salida mensaje de error.

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

Cargar aplicación de configuración (Público);


Carga de los perfiles de extensión (definido por la
extra_config_list); cargar la configuración de
estado de aplicación;
definiciones de carga de
alias; comportamiento de
carga se define; una carga
común archivos (función);
inscripción espacio de
nombres de aplicación;
establecer la zona horaria predeterminada, los
archivos de carga función (definida por el
extra_file_list) repartidas;
Cargando paquete de idioma del sistema;

6, detección de acceso URL


Después de la aplicación de inicialización se ha completado, se realizará una visita a la
detección de URL, el paquete de detección de manos insertar PATH_INFO detección
de URL sufijo.

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

http: //serverName/index.php s = / index / índice / hola y val = valor?

Si el archivo es un acceso de línea de comandos a la entrada de abajo, y luego por

$ 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 . . .

Tendra los $ _SERVER normales [ 'PATH_INFO'] para continuar la discusión.

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.

Si después de la detección de búsqueda de enrutamiento Ll, definido de acuerdo con


los registros de direcciones de encaminamiento correspondientes URL Ll
programación. 5.0 soporta la dirección de encaminamiento de la siguiente manera:

módulo de enrutamiento Ll / controlador / operador;


Ll redirección dirección de
encaminamiento externa;
Ll método controlador de
encaminamiento;

Utilice este - 35 -
documento en
viendo las nubes
construcción de
ciclo de
vida

Enrutamiento Ll función de cierre;


método Ll para la clase de

encaminamiento; Dirección de

enrutamiento puede verse afectada

por IMPACTO dominio de unión.

Si cierra la detección de enrutamiento predeterminado no válido o el análisis de


identificación del módulo / controlador / operación se lleva a cabo.

Si se especifica una aplicación de programación cuando se inicia la


aplicación, a continuación, la detección de enrutamiento es optativa. Se
puede utilizar \ Pensar \ App :: dispatch () para aplicaciones de
programación, por ejemplo: App :: dispatch ([ 'type' => 'módulo',
'módulo' => 'index / index']);

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.

En este paso, para completar la lógica empresarial de la aplicación y se devuelve


datos.

Comisión recomienda el uso de retorno para devolver los datos, en lugar de


hacerse eco de salida, si no es necesario, no utilice la salida o
morir ejecución descanso.

los datos de salida de eco directos no será conveniente que se emitirá

automáticamente convertido mediodía. Aquí está el mecanismo de solicitud de

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ódulo / controlador / operación


Esta es la solicitud de distribución mecanismo por defecto, el sistema determina el
módulo de petición actual, el controlador de mano de acuerdo con la dirección de
encaminamiento o URL
Nombre de la operación, y llamar automáticamente la clase del controlador de acceso
apropiado, correspondiente al método de operación se ejecuta. Los siguientes
mecanismos, determinará primero el módulo actual, y la operación del módulo de
inicialización (mano funcionamiento de la aplicación de inicialización similar), los
parámetros de configuración de los parámetros de configuración del módulo anula la
solicitud aún no en vigor.

Apoyar la operación módulo de asignación, los métodos de unión de los parámetros


URL Ll, Ll de unión y similares de estas funciones.

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

solicitud de distribución directa Ll redirección de direcciones externa, es compatible


con el código de redirección se especifica, el valor predeterminado es 301
redirección.

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.

Los métodos de la clase


Además de la realización anterior, el método también es compatible con la clase
solicitud de distribución Ll, en el prospecto:
Los métodos'Blog
estáticos:
/: id' => '\ org \ util \ Blog ::
read'
clase de método: 'blog /: id' => '\ app \ index \ Controlador \ Blog @ leer'

9, para ser el mediodía de salida


Todas las modalidades de funcionamiento del controlador no se devuelven
directamente a la salida de retorno, el sistema llamará Respuesta :: enviar
El método de aplicación devuelve la página final o un cliente Ll salida de datos y
convierte automáticamente en los parámetros de configuración
default_return_type fórmula Ke. Por lo tanto, la ejecución de la aplicación de
salida de datos sólo tiene que volver a una normal de datos PHP.

10, el extremo de la solicitud


De hecho, después de los datos de aplicación del mediodía se impriman, la
aplicación realmente no terminó, el sistema se interrumpa la aplicación o salida
Guardar una operación de escritura de registro.

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.

Escrito por el registro de la operación de inicialización IMPACTO registro.

Utilice este - 31 -
documento en
viendo las nubes
construcción de
archivo
de
entrada

archivo de entrada

ThinkPHP sola página de entrada de acceso en modo malla mano despliegue, no


importa lo que la función se ha completado, las aplicaciones tienen un sistema
de
(Pero incierta es la única) de entrada. Hay que decir que todas las aplicaciones

son de la entrada del comienzo del archivo, e importar documentos de diferentes

aplicaciones son similares.

definiciones de archivo de entrada


documento de entrada completado:

camino Marco de Definición, páginas malla camino (opcional)


constantes definidas
RELACIONADOS bastidor de
carga (opcional) archivo de
entrada (mosto)

5.0 archivo de aplicación por defecto se encuentra en la población de entrada /


index.php, de la siguiente manera:

Diseño ubicación del archivo de entrada es permitir la implementación de aplicaciones seguras,

Public Directorios para el directorio web accesible, que realmente ponen archivo Ll está disponible

para el directorio no acceso a la web.

Modificar una ubicación de archivo de entrada consulte la sección <Despliegue -


entorno de alojamiento virtual>

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.

APP_PATH para definir la carga ruta absoluta aumentará la eficiencia del

sistema. En algunos casos, puede que tenga que cargar la base del documento

marco s base.php guía, parte del archivo de guía s


start.php diferencia no va a tomar la iniciativa para ejecutar una
aplicación, sino que requiere la aplicación para realizar ellos mismos, aquí
está un ejemplo:

// directorio de aplicaciones personalizadas


define ( 'APP_PATH', DIR . ' / . . / a p p l i c at i o n / ' ) ;

Utilice este - 33 -
documento en
viendo las nubes
construcción de
archivo
de
entrada

// archivo de inicio de base de bastidor de carga


require DIR . ' /. . / t h i n k p h p / b a s e . p h p ' ;
// Añadir código extra
// . . .
// de ejecución de aplicaciones
\ Piense \ App :: run () -> send ();

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:

HTTP: //serverName/index.php(O de la población de otros archivos de la


aplicación)/módulo/controlador/operativo/ [ginseng
Ll soporte de conmutación de acceso de línea de comandos, las reglas de acceso si
el interruptor Ll es el modo de línea de comandos siguiente:

> Php.exe el index.php (E o archivo de entrada de la aplicación eucariota) del


módulo / controlador / operador / [nombre del parámetro / valor de parámetro
Puede
...] ver la dirección de acceso PATH_INFO Ll, sea o URL para acceder acceso de
línea de comandos, se utilizan, en cierto
PATH_INFO separador puede ser proporcionada.

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:

> Php.exeel index.php (E o archivo de entrada de la aplicación eucariota) del


módulo / controlador / operador? Nombre del parámetro = valor del parámetro y
Si el
... servidor no soporta el modo de compatibilidad Pathinfo se puede utilizar para
acceder a la siguiente:

HTTP: //serverName/index.php(O de la población de otros archivos de la


aplicación)? S = /módulo/controlador/operativo
Cuando es necesario, podemos de alguna manera omitirse URL dentro del módulo
controlador de mano.

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

última llamada se convertirá en ley joroba. Por ejemplo:

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

Si visita la siguiente dirección

http: //localhost/index.php/Index/BlogTest/read

Utilice este - 36 -
documento en
viendo las nubes
construcción de
el
acceso
URL

// Y los siguientes son de acceso equivalente


http: //localhost/index.php/index/blogtest/read

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

Nade operativo nombre de módulo se convierte directamente en el tratamiento


minúsculas.

Si desea acceder a Yan Ke URL mayúsculas y minúsculas, se puede establecer en el


archivo de configuración de la aplicación:

// cercaURLcontrolador de conversión automática y el nombre de la operación


'Url_convert' => falso,

Una vez fuera de la conversión automática, el nombre del controlador en la dirección


de URL se convierte en un caso-sensibles, tales como delante del acceso necesario a
la dirección
escribió:

http: //localhost/index.php/Index/BlogTest/read

Pero la siguiente URL para el acceso sigue siendo válida:

http: //localhost/index.php/Index/blog_test/read

Visite el siguiente URL no es válida:

http: //localhost/index.php/Index/blogtest/read

Nota: la dirección de encaminamiento de las reglas de enrutamiento definidos de


acuerdo con el nombre real de la búsqueda se define el nombre del controlador
archivo de yentrada
(mayúsculas oculta
minúsculas).

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

2, se cambiará Ninguno Ninguno AllowOverride


tod
os
3, en la misma entrada del directorio de presentar la solicitud para agregar el
archivo .htaccess, de la siguiente manera:

<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

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

módulos de espacio de nombres siguientes sistema de archivo de la


biblioteca comenzando con la aplicación \ nombre del módulo, por ejemplo:

// i n d e xmóduloíndiceclase del controlador

Utilice este - 41 -
documento en
viendo las nubes
construcción de
Diseño
del
módulo

aplicación \ index \ Controlador \ Índice


//
i n d e xmódulousuarioClas
e modelo aplicación \
index \ modelo \
LaUsuario
aplicación puede realmente cambiar la forma en que se define mediante, por
ejemplo, modificar el archivo de configuración de la aplicación:

'App_namespace' = > ' A p l i c a c i ó n ' ,

Por lo tanto, el módulo de índice de la biblioteca se convierte en espacio de nombres:

// 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.

módulo controlador de mano Hidden


Dado que el valor por defecto es el uso de la ayuda de varios módulos, por lo que en
el caso de múltiples módulos deben identificar el módulo actual en la dirección URL,
como
Si sólo hay un módulo, se puede unir un módulo, la entrada de archivo de la
aplicación se añade el siguiente código:

// La actual visita a unirseíndicemódulo


define ( 'BIND_MODULE', 'index');

Después de la unión, visite nuestra dirección URL se convierte en:

http: //serverName/index.php/ del controlador / operador / [nombre de parámetro / valor de parámetro


...]
El acceso al módulo es el módulo de índice.

Si su aplicación es relativamente sencilla, módulos controladores tienen una sola


mano, puede enlazar el módulo regulador de la mano en la aplicación de los
documentos públicos, de la siguiente manera:

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');

Después del ajuste, visite nuestra dirección URL se convierte en:

http: [valor del parámetro Nombre / parámetro ...] //serverName/index.php/ operativo /

Utilice este - 43 -
documento en
viendo las nubes
construcción de
Diseño
del
módulo

El acceso al módulo es el módulo de índice, el controlador es el controlador


Índice.

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

manera: primero se define en

el archivo de configuración de

la aplicación:

// Cerrar el diseño de varios módulos


'App_multi_module' => falso,

A continuación, ajustar la estructura de directorio de la aplicación de la siguiente


manera:

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

app \ aplicación índice \


Controlador \ Índice \
index \ modelo \ Usuario
Utilice este - 44 -
documento en
viendo las nubes
construcción de
Diseño
del
módulo
convertirse en

app \ App Controller


\ Índice \ modelo \
Usuario

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

Los espacios de nombres

Los espacios de nombres


ThinkPHP5 using namespace definir la mano cargar automáticamente el archivo de
biblioteca, resolver con eficacia la mano de varios módulos
conflictos de nombres entre biblioteca Compositor, y para lograr un mecanismo de

carga automática biblioteca más eficiente. Si usted es de espacio de nombres

conceptos básicos no está seguro, consulte el manual de PHP:Los espacios de

nombres de PHP

De particular interés es que si es necesario llamar a la PHP biblioteca


incorporada, o bibliotecas de terceros no utilizan espacios de nombres, además
de recordar al crear instancias de la biblioteca \ Por ejemplo:

// 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

automáticamente la clase con el fin de lograr una verdadera carga

diferida. Por ejemplo, \ definiciones piensan \ caché de clase \ driver \

archivos son:

namespace p e n s a r \ \ d r i v e r

de la cache; class expediente

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 ( ) ;

El sistema cargará automáticamente el archivo de clase correspondiente a la ruta de


clase, el camino es realmente donde
ThinkPHP / biblioteca / pensar / cache /
controlador / File.php .

5.0 La especificación del directorio por defecto es minúscula, archivo de clase


nombrada ley joroba, la primera letra en mayúscula.

Utilice este - 42 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s

En principio, el método puede apoyar el directorio llamado joroba, siempre y


cuando la definición de espacio de nombres puede causar directorio de mano, por
ejemplo:

creamos una instancia

$ 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 ( ) ;

El sistema cargará automáticamente ThinkPHP / biblioteca / piensa


controlador El archivo / Caché / / archivo.php.

espacio de nombres raíz (paquetes de bibliotecas)


espacio de nombres raíz es un concepto clave de lo anterior \ pensar \ cache
\ driver \ clase de archivos, por ejemplo,
que es el espacio de nombres raíz, realmente corresponde con el
directorio inicial es el catálogo de la biblioteca de espacio de nombres
del sistema (ThinkPHP / biblioteca / piensan), podemos entender fácilmente
el espacio de nombres raíz corresponde a un paquete de biblioteca.

Sistema construido varias espacio de nombres raíz


(paquetes de bibliotecas) de la siguiente manera: l l l
Nombre Descripción directorio de la biblioteca l
l --- l --- l --- núcleo del sistema lthinkl l /
bibliotecas lthinkphp / library / thinkl bibliotecas
del sistema ltraitsl rasgo lthinkphp / biblioteca /
traitsl lapplicationl biblioteca de aplicaciones lappl

Si es necesario agregar un nuevo espacio de nombres raíz, hay dos maneras: El


registro de un nuevo espacio de nombres raíz o poner ExTEND_PATH
Contenido (registro automático).

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:

Ruta :: get ( 'hola', 'index / hola');

agregarse nosotrose p en sa r \ Ro ut e o el uso

registro automático
\ Piense \ Ruta :: get ( 'hola', 'index / hola');

Sólo tenemos que empacar su propio catálogo de la biblioteca en el directorio


ExTEND_PATH (por defecto extender, configurable),
Se puede registrar automáticamente espacio de nombres correspondiente, por
ejemplo:

Utilice este - 44 -
documento en
viendo las nubes
construcción de
Los
espacios
de
nombre
s

Hemos añadido un directorio de abajo extender mi catálogo y, a


continuación, definir una clase \ mi \ Test (archivo de clase se encuentra
extensión / mi / Test.php) como sigue:

namespace m i s

clas;s prueba

Public f u n c i o n s a y H el l o ( )

echo ' H o l a ' ;


}
}

Podemos crear instancias directamente llamada mano:

$ Test = N e b r a s k aw \ M y \ T e s t ( ) ;
$ Ensayos> sayHello ();

Si volvemos a definir las constantes ExTEND_PATH en el archivo de entrada de la


aplicación, también puede cambiar el \ mi \ Test
Ubicación de los archivos de clase, por ejemplo:

define ( 'ExTEND_PATH', '.. / vendedor /');

Por lo que \ mi \ ubicación del archivo de clase de prueba se convierte en


/vendor/my/File.php.

El registro manual
También puede registrar nuevo espacio de nombres raíz a través de registro manual,
por ejemplo:

Agregue el código siguiente en la solicitud de documentos públicos:

\ Piense \ cargador :: addNamespace ( 'mi', '.. / aplicación / extensión / mi /');

Si desea registrar múltiples espacio de nombres raíz, puede utilizar:

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/',
]);

También puede agregar la configuración directamente en el archivo de configuración


de la aplicación, el sistema registra automáticamente en la ejecución de la aplicación.

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/',
]

paquete de biblioteca de aplicaciones


Con el fin de evitar un conflicto de manos Compositor cargar automáticamente la
biblioteca, el espacio de nombres raíz de las bibliotecas de aplicaciones son
sistemas con aplicación
Nombre, por ejemplo:

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

archivo de clase verdadera se encuentra en application / index / modelo /


User.php.

namespace a p p \ a d m in \

evento; class usuario

archivo de clase verdadera se encuentra en application / admin / eventos /


User.php.

Si cree que los conflictos de nombres de raíz o aplicación inadecuados, puede


modificar el archivo de configuración de la aplicación:

'App_namespace' = > 'Aplicación',

V5.0.8+ versión, app_namespace Los parámetros de configuración cambian


APP_NAMESPACE Las constantes se definen en la entrada del archivo.

Una vez definido, la biblioteca de espacio de nombres de aplicaciones lee:

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

alias de espacio de nombres


Marco permite alias definición de espacio de nombres, por ejemplo:

namespace a p l i c a c i ón \

index \ modelo; nosotrose

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 \

controlador; nosotrose app \

index \ modelo \ 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 ( ) ;
}
}
Si se registra el espacio de nombres en la aplicación de los documentos públicos alias
de la siguiente manera:

\ Piense \ Loader :: addNamespaceAlias ( 'modelo', 'aplicación \ index \ modelo');

Por lo tanto, el código del controlador anterior se puede cambiar a:

namespace a p l i c a c i ón \ i n d e x \

controlador; nosotrose modelo \

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

Si no es así, por favor agregarse a dominar el PHP básico, o


ThinkPHP5.0 en posteriores documentos de la mano El proceso
de aprendizaje, la falta de comprensión del espacio de nombres
serán sus grandes discapacidades de aprendizaje.

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 la realización de reflexión realizado por bibliotecas \


cargador, cargadores automáticos normas, de conformidad con PSR-4 de PHP.

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

espacio de nombres, entonces se pueden cargar automáticamente la clase. biblioteca

cargador automático detecta orden de las páginas de la siguiente manera:

1, biblioteca mapeo de detección;


2, PSR-4 cargue automáticamente de detección;
3, PSR-0 automático de detección de carga;

El sistema detectará el orden de las páginas de búsqueda, después de la detección


de la entrada en vigor, se cargará automáticamente el archivo de la biblioteca
correspondiente.

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');

El método también se puede usar addClassMap definición de asignación


biblioteca de importación a granel, por ejemplo:

$ Map = [
'Think \ Log' => LIB_PATH.'think \ log.php',
'Org \ util \ array' LIB_PATH.'org \ util \
]; => Array.php '
Cargador :: addClassMap ($
mapa);

Aunque la biblioteca se asigna por medio de una clase registrada no es directorio


de espacio de nombres corresponden obligatorio, se recomienda seguir

Utilice este - 50 -
documento en
viendo las nubes
construcción de
cargará
automát
icament
e

especificación PSR-4 define directorio de la biblioteca mano.

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 ) ;

// La introducción de extender / WeChat-SDK / wechat.class.php


cargador :: import ( 'WeChat-sdk.wechat', E x T E N D _ P A T H ,
'.class.php');
// función de ayuda
import ( 'WeChat-sdk.wechat', E x T E N D _ P A T H , ' . c l a s s . p h p ' ) ;
Un concepto similar también se introduce en el espacio de nombres de biblioteca
(pero sin apoyo real espacio de nombres), el M apoyado espacio de nombres
Entre "el
prospecto
: l l
catálogo
Descripció
n l l l l ---
---
lbehaviorl l núcleo
lthinkl biblioteca /
bibliotecas
comportamiento del
sistema l ltraitsl Rasgos
ilo aplicaciones de

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

l l l @ representa los paquetes de bibliotecas módulo actual

Si cumplir plenamente con la definición del espacio de nombres del sistema,


entonces es como tener que cargar manualmente el archivo de la biblioteca, se
puede instanciar directamente.

ThinkPHP5.0 no se recomienda el método de importación.

Compositor carga automáticamente


Compositor versión 5.0 es compatible con la biblioteca instalada cargador
automático, puede buscar en la biblioteca depende directamente de acuerdo vida
Compositor
Espacio de nombres llamado directamente.

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.

rasgo es una especie de código mecanismo de reutilización para el lenguaje


herencia simple similar a PHP preparado. A fin de reducir solo rasgo
Restricciones heredadas idioma, permitiendo a los desarrolladores libremente
método de multiplexación clase separada encuentra en diferentes jerarquías.
Mano rasgo de combinaciones de clases semántica es la definición de formas de
reducir la complejidad, evitando mezclaron a mano en una clase de herencia
múltiple convencional
(Mixin) problemas típicos asociados.

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 (

'controlador / Jump'); // La introducción de\ \ rasgos

controlador clas Jumps í 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 ( )

$ This-> asignar ( 'nombre', 'valor');


$ This-> Show ( 'index');
}
}

Si su versión de PHP es mayor que 5,5, entonces la función se puede omitir s


load_trait en el rasgo.

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

S puede soportar simultáneamente múltiples rasgo en una biblioteca, por


ejemplo:

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 ( )

}
}

El sistema proporciona alguna biblioteca rasgo envasados, principalmente el


controlador de expansión para la clase de modelo de la mano. Estos sistemas
internos
biblioteca rasgo opuesto utilizando las características de las raíces de espacio
de nombres en lugar de rasgo, con el fin de evitar conflictos sistema de mano
de palabras clave.

s Realización biblioteca rasgo en nota prioridad, heredado de una

Utilice este - 51 -
documento en
viendo las nubes
construcción de
rasgoss en

base de miembros de la clase serán Insertar el


elemento de
rasgo cubierta
Cubrir. orden de las páginas de prioridad de un miembro de la clase actual cubre
métodos de rasgo, y el rasgo se hereda método cubierta.

clase rasgo no soporta las constantes de clase definida, definida en el rasgo o


atributo no heredará la clase actual de la clase

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.

Más acerca del rasgo puede referirse al contenidoPHP Manual Oficial.

Utilice este - 53 -
documento en
viendo las nubes
construcción de
API-
amigab
le

API-amigable

La nueva API para los desarrolladores ThinkPHP hecho un montón de optimización, y


no se basa en las extensiones de esquema API originales.

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:

'Default_return_type' => 'json'

A continuación, el siguiente valor de retorno método controlador se convierte


automáticamente a la fórmula y volver Json verificada.

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 ' = >


'thinkphp.cn']; RETURn [ 'Datos' => $ data, 'código'
= > 1 , ' m e s s a g e ' = > ' La operación se ha completado'];
}
}

Después de acceder a la URL solicitada, el resultado final puede ser visto como Ll en
el navegador:

"Datos": "name": "ThinkPHP", "url": "thinkphp.cn"}, "código": 1,


"mensaje": "\ u64c d \ u4f5c \ u5b8c \ u6210"}

Si necesita volver a su verdadero tipo de datos Ke, entonces el código del


controlador en sí no necesita realizar ningún cambio.
Utilice este - 54 -
documento en
viendo las nubes
construcción de
API-
amigab
le
Soporte especificar explícitamente el tipo de salida de modo de salida, tal como la
salida de datos JSON se especifica a continuación:

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

// denominaciónJSONLa salida de datos


return J S O N ( [ ' d a t os ' = > $ d a t a , ' c ó d i g o ' = > 1 , ' m e s s a g e '
} = > ' La operación se ha completado']);
}

XML o especificar el tipo de datos de salida:

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:

'App_trace' => verda


'Traza' => dera,
'Tipo' [ => ' Z ó c a l o ' ,
// s o c k e tservidor
'anfitrión' => ' S l o g . t h i n k p h p . c n ' ,
],

A continuación, puede instalar los navegadores remotos depuración de cromo plug-


ins, la puesta en sección de referencia detallada.

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.

Para algunas aplicaciones simples, es necesario configurar los archivos de


configuración, y para las necesidades complejas, puede extender su propio perfil
independiente.

Los parámetros de configuración del sistema se accede por simple

acceso variable global estática y de manera eficiente. Las

funciones de configuración realizados por \ piensan clase \ Config.

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 aplicaciones


Bu config.php archivo de configuración
database.php de base de datos de
Bu archivo de configuración
route.php Bu de aplicación de
índice Bu
Bu config.php enrutamiento archivo de
database.php L configuración
BU indexdirectorio de
archivos de configuración
del de
Si no quiere poner directorio módulo indexarchivo
archivos de configuración de la aplicación Ll se
de configuración del
puede definir en un archivo de entrada
módulo de directorio
indexarchivo de de configuración
independiente, añadir configuración de la base
de datos del módulo
definiciones CONF_PATH constantes por ejemplo.:

// directorio de perfil personalizado y el directorio de la aplicación en el mismo nivel


define ( 'CONF_PATH', DIR . '/ .. / config /');

La siguiente estructura de directorios de configuración es el siguiente:

aplicación Bu directorio de aplicaciones


config Bu directorio de
Bu config.php configuración
database.php del archivo de
Bu configuración
route.php Bu de base de
índice Bu
Bu config.php datos de
database.php L archivos de
BU configuración
de
directorio de configuración extendida ( V5.0.1 )
aplicaciones
de
5.0.1 El concepto comenzóenrutamiento
a ganar directorio extendida configuración, directorio
fichero de
de configuración o directorio en el módulo de configuración de la aplicación
configuración
indexdirectorio de
aumenta archivos de configuración
Utilice este del módulo indexarchivo - 58 -
documento en de configuración del
viendo las nubes módulo indexarchivo de
construcción de configuración de la base
de datos del módulo
directori
osubdirectorio
de extra, el siguiente archivo de configuración se
configur
ación
cargará automáticamente, sin necesidad de configuración. Si define

constantes CONF_PATH para el directorio de configuración para el

directorio de configuración extendida de la siguiente manera:

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

database.php Bu archivo de configuración


route.php Bu Perfiles de enrutamiento
Bu adicional de base dede
directorio datos
índice Bu configuración de lade
índicedirectorio
Bu adicional aplicación
archivos deextendida
índicedirectorio de
Bu config.php configuración
índicearchivo de del
database.php L módulo extendido
configuración
índicearchivo dedel
BU módulo
configuración de la base
de datos del módulo

Nombre del archivo de configuración extendida (sin el sufijo) es el nombre de los


parámetros de configuración, y entregará los parámetros de aplicación en el
archivo de configuración
la consolidación de la línea.

Utilice este - 60 -
documento en
viendo las nubes
construcción de
configur
ación de
estilo Ke

configuración de estilo Ke

ThinkPHP soporta una variedad de configuraciones de estilo de estilo Ke Ke, pero en


última instancia resolvió PHP forma de matriz.

PHP matriz definición


Devuelve matriz PHP manera es la configuración predeterminada define fórmula Ke,
por ejemplo:

//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

utilizar una matriz de dos dimensiones en el archivo de configuración para

configurar la información adicional, como por ejemplo:

//Perfiles de
proyectos
return [ => [
'Caché' => 'Archivo',
'Tipo' => CACHE_PATH,
'Camino' => '',
'prefijo' => 0
'expirará'
],
];

Realmente Ke-tipo soporte de configuración


El modo por defecto para definir matriz PHP el archivo de configuración, puede
Utilice este - 61 -
documento en
viendo las nubes
construcción de
configur
ación
definirde CONF_ExT cambio constante en los documentos de importación es cierto
estilo Ke
E Tipo de configuración:

// Cambiar el formato de configuracióniniformato


define ( 'CONF_ExT', ' .i n i ' ) ;

Utilice este - 62 -
documento en
viendo las nubes
construcción de
configur
ación de
estilo Ke

Una vez configurado, automáticamente analiza apoyado tipo de .php incluyen


configuración, en el prospecto ini, .xml mano .json do
soporte de tipo Ke.

5.0.2 versión comenzó a apoyar la configuración de estilo Ke yaml

ejemplo de configuración ini Ke fórmula:

default_module = Index ;El módulo


por defecto default_controller =
index ;controlador por defecto
default_action = index ;La acción
predeterminada
Verificados ejemplo de configuración xml de fórmula:

<Config>
<Default_module> Índice </ default_module>
<Default_controller> index </ default_controller>
<Default_action> index </ default_action>
</ Config>

Verified Json ejemplo de configuración de la fórmula:

"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

// La lectura de dos parámetros de configuración


echo C o n f i g : : g e t ( ' u s e r . t y p e ' ) ;
// O utilizar la función de ayuda
echo c o n f i g ( ' u s e r .t y p e ' ) ;

Sistema no admite más de dos parámetros de configuración tengan, Venta tomada


de forma manual paso a paso.
Bajo las circunstancias disponen de un margen, aún apoyar la operación de las dos

configuraciones. Si realmente Verified archivo de configuración de las fórmulas, la

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 =
''

Ke definiciones de tipos de archivo XML estándar:

<Config>
<Usuario>
<Tipo> 1 </ type>
<Nombre> ThinkPHP </ name>
</ Usuario>
<Db>
<Tipo> mysql </ type>
<Usuario> root </ usuario>
<Contraseña> </ password>
</ Db>
</ Config>

El conjunto método también soporta dos configuraciones, por ejemplo:

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

En ThinkPHP, el archivo de configuración de la aplicación, ya que se carga


automáticamente cargar el orden de las páginas es:

> Configuración Dinámica - Configuración de la práctica -> configuración de la


aplicación -> configuración expandida -> configuración de la escena ->
Lo Configuración
anterior es el archivo de configuración para cargar el orden de las páginas, ya que
del módulo
antes de la configuración posterior puede sobreescribir la configuración del mismo
nombre (no vigente en la premisa de
Bajo), por lo que el orden de las páginas de configuración del

derecho de prioridad Ll izquierda. A continuación se describe la

diferencia entre la posición de la mano bajo un archivo de

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.

Le recomendamos leer detenidamente el sistema de parámetros de configuración


archivo de configuración convención relacionada liquidación, la comprensión de
los parámetros de configuración por defecto del sistema.

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

archivo de configuración extendida es el archivo de configuración para los


parámetros de configuración adicionales definidos por extra_config_list, el valor
predeterminado cargará
dos manos validar los perfiles de extensión de la base de datos.

V5.0.1 Inicio, canceló los parámetros de configuración directamente en el


archivo de configuración extendida application / extruna Directorio se
cargará automáticamente.
Configuración del escenario
Cada aplicación puede ser proporcionada en diferentes situaciones de estado propio
(de otro modo conocido como escenario de aplicación), y las cargas de diferente
Perfil. Por ejemplo, es necesario configurar un entorno de prueba de base de datos

diferente en la empresa estaban en casa mano. De este modo se puede tratar en el

público

Utilice este - 62 -
documento en
viendo las nubes
construcción de
configur
ación
cargada

Secretario de Medio Ambiente, se configura en el archivo de configuración de la


aplicación:

'App_status' => 'oficina'

Se carga de forma automática correspondiente al estado del archivo de


configuración (que se encuentra en el valor predeterminado application /
office.php).

Si nos vamos a casa, modificamos la definición como:

'App_status' => 'casa'

Se carga de forma automática correspondiente al estado del archivo de


configuración (que se encuentra en la aplicación / home.php).

archivo de configuración del Estado es opcional

La configuración del módulo


Cada módulo se carga automáticamente su propio archivo de configuración (que
se encuentra en la aplicación / módulo actual nombre /config.php).

El módulo también puede apoyar la convención de nomenclatura perfil del estado


independiente es:
solicitud/El nombre del módulo
actual/estado de la aplicación.php .

archivo de configuración del módulo es opcional

Si los archivos de configuración de aplicaciones son grandes, al igual que en varios


archivos de configuración adicionales individuales que necesita para cargar o archivo
de configuración, se puede considerar una configuración dinámica o la configuración
extendida (que se describirá más adelante por referencia).

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:

Config :: carga (APP_PATH.'config / config.php ');

La configuración por defecto es la fórmula verificados definido PHP devuelve una


forma de matriz, 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

Config :: parse (APP_PATH.'my_config.ini '' ini ');


Config :: parse (APP_PATH.'my_config.xml', 'xml');

Los métodos de análisis sintáctico primer argumento necesitan para pasar el nombre
de archivo completo o configuración de contenido.

Si no pasa el segundo argumento, el sistema identificará automáticamente el tipo de


configuración de acuerdo con el nombre del archivo de configuración, por lo que la
siguiente redacción aún se admite:

Config :: parse ( 'my_config.ini');

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');

Apoyar el contenido del archivo de configuración de entrada cuando el segundo


argumento debe ser especificado de forma explícita.

Ke las definiciones estándar de tipos de archivos 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>

controlador de clase de configuración usando una variedad de diferentes formas de


apoyar el tipo de perfil, puede ser arbitrariamente extendido como sea necesario.

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:

echo C o n f i g : : g e t ('Los parámetros de configuración1 ');

El sistema define una configuración ayudante, más que puede ser simplificado
como:

echo c o n f i g ( 'Los parámetros de configuración1 ');

Tome vender todos los parámetros de configuración:

dump (Config :: get ());


// o volcar (config ());

O es necesario determinar si existe un ajuste de parámetros:

Config :: tiene ('Los parámetros de configuración2 ');


// o config ( '?Los parámetros de configuración2 ');

Si usted necesita tomar dos configuraciones venta, se puede utilizar:

echo C o n f i g : : g e t ('Los parámetros de


configuración.dos parámetros'); Echo
c o n f i g ( 'Los parámetros de
configuración.dos parámetros');

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ón''Los valores de configuración');


// O utilizar la función de ayuda
config ('Los parámetros de configuración''Los valores de configuración');

También puede configuración del lote, tales como:

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 ,

Si es necesario utilizar los archivos de configuración separados, a continuación,


añadir primero la configuración en config.php:

'Extra_config_list' => [
'Database'],

Una vez definido, la configuración de la base de datos se puede utilizar archivos


independientemente database.php, la configuración es el siguiente:

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

'Nombre de => '127.0.0.1',


host'
// nombre de => 'ThinkPHP',
la base
'Base de datos' => 'Raíz',
// Nombre de
usuario de base => ''
de datos
// puerto de conexión de
base de datos
'Nombre de
'HostPort'
usuario' => ' '
// parámetros
base de de conexión
de base
datos dede datos
contraseña
'Parámetros'
'Juego de => ['Utf8',
=> ],
// Base de datos de
caracteres'
'Contraseña'
// prefijo depor
codificación la => ''
tabla de base
defectoutf8
// de
el modo de depuración
datos
de base de datos
], 'depuración'
'Prefijo' => f a l s o ,

Si configura los parámetros extra_config_list, mientras que el texto en la mano


database.php config.php
Las piezas se configuran, a continuación, database.php fichero de configuración

anula la configuración en config.php. Los parámetros son independientes del

archivo de configuración para obtener una configuración de dos dimensiones, por

ejemplo, para obtener un archivo de configuración de base de datos independiente

parámetro de tipo debe ser:

Config :: get ( 'database.type');

Para un archivo de parámetros de configuración independiente completa, utilice:

Config :: get ( 'base de datos');

Las ventas de automóviles toman configuración extendida


Requisitos de la versión V5.0.1

5.0.1 o posterior es compatible con las ventas de automóviles toman archivo de


configuración extendida (parámetros de configuración extra_config_list
abandonados),
Sólo es necesario ampliar el archivo de configuración en el directorio de la
Utilice este - 72 -
documento en
viendo las nubes
construcción de
configur
ación
aplicación / adicional, usted puede conseguir de forma automática vendido.
indepen
diente

archivos de configuración automática están vendiendo a tomar los parámetros de

configuración secundarias, nombre del perfil de nivel es el nombre de la

configuración extendida.

El módulo también puede apoyar a su archivo de configuración extendida, sólo


hay que poner en aplicación / nombre del módulo / siguiente adicional puede ser
cargado automáticamente.

Utilice este - 73 -
documento en
viendo las nubes
construcción de
configur
ación
indepen
diente

El archivo de configuración por defecto no es independiente de la carga en esta


columna, en el prospecto:

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.

// líderesmy_config.phpparámetros de configuración y hombre satisfechousuarioalcance


Config :: load ( 'my_config.php', '', 'user');
// Analizar y líderesmy_config.inyo Los parámetros de configuración, lea las
personaspruebaalcance
Config :: parse ( 'my_config.ini', 'ini', 'test');
// estableceruser_typeParámetros y hombre satisfechousuarioalcance
Config :: set ( 'user_type', 1, 'user');
// parámetros de configuración por lotes, y las personas incluidaspruebaalcance
Config :: set ($ config, 'prueba');
// leerusuarioalcanceuser_typeLos parámetros de configuración
echo C o n f i g : : g e t ( ' u s e r _ t y p e ' , ' u s u a r i o ' ) ;
// leerusuarioLos siguientes parámetros de
configuración para todos los ámbitos Dump
(Config :: get ( '', 'usuario')); volcado
(config ( '', null, 'usuario')); / / ídem
// juicio enpruebaSi existe margen por debajouser_typeparámetros
Config :: tiene ( 'user_type', 'test');
El método puede ser utilizado para cambiar el perfil actual gama alcance, por
ejemplo:

Config :: rango ( 'prueba');

Utilice este - 70 -
documento en
viendo las nubes
construcción de
configuració
n variable
de entorno

configuración variable de entorno

configuración variable de entorno


ThinkPHP5.0 apoyar el uso de variables de entorno para configurar.

En el proceso de desarrollo, se puede aplicar en el directorio raíz de .env


configuración variable de entorno simulado, parámetro de configuración define
.env archivo usando la fórmula Ke ini, por ejemplo:

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.

todos serán convertidos parámetros de configuración Es equivalente a


de las variables de entorno a mayúsculas, es nulo, no "", el valor de
hay manos falso
sí mano
verd Es equivalente a "a".
ader
o
ThinkPHP5.0 variables de entorno por defecto prefijados PHP_, también
pueden ser re-constante variando la ENV_PREFIx
Ajustes.

Tenga en cuenta que la variable de entorno no admite parámetros de matriz, si es


necesario utilizar un parámetro de matriz, el uso subraya la segmentación definida
nombre del parámetro de configuración:

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:

Env :: get ( 'database.username');


env :: get ( 'database.password');
// Al mismo tiempo también puede obtenerse de la manera siguiente
Env :: get ( 'database_username');

Utilice este - 72 -
documento en
viendo las nubes
construcción de
configuració
n variable
de entorno

Env :: get ( 'database_password');

Puede soportar valores por defecto, por ejemplo:

// Las variables de entorno Si no hay ningún


valor por defectoEnv raíz :: get (
'database.username', 'root');

Las variables de entorno se pueden utilizar directamente en la configuración de la


aplicación, por ejemplo:

return [
'Nombre de => Env :: get ( 'nombre de host',
host' '127.0.0.1'),
];

los ajustes de variables de entorno app_debug mano app_trace Parámetros


entrarán en vigor automáticamente (con preferencia en el fichero de
configuración de la aplicación), debe ser verdaderos parámetros por E Env ::
GEt El método puede vender a tomar.

Utilice este - 73 -
documento en
viendo las nubes
construcción de
enr
uta
mie
nto

enrutamiento

función de encaminamiento se realiza mediante \ piensan clase \ ruta.

contorno
Dado que se aprobó el artículo URL predeterminada ThinkPHP5.0:

http: // server / módulo / controlador / acción / param / valor/...

El papel de enrutamiento es simplificar el acceso de direcciones URL y resolvemos


que la definición correcta del tipo de enrutamiento.

Las nuevas funciones de enrutamiento hecho un montón de mejoras, prospecto:

Soporte controlador de módulo de enrutamiento método Ll / funcionamiento de


la clase del controlador, la función de cierre de la mano redirección de
direcciones, o de hecho cualquier
método de biblioteca;
mejorada ruta de cierre;
Las reglas de enrutamiento definen las reglas
globales para apoyar la mano variables locales
(regular); Ll soportar cualquier nivel de control
de enrutamiento; mejoras de enrutamiento sub-
dominio; Soporte apoya parámetros de
encaminamiento de paquetes y paquetes
definidos anteriormente; incrementar los
recursos de enrutamiento para apoyar las manos
de anidación; apoya la conducta o la función de
la determinación de la regla de enrutamiento
personalizado;

ThinkPHP5.0 regla de análisis de la URL de soporte de enrutamiento de tres maneras.

5.0 para el enrutamiento no es para módulos de aplicación, y por lo tanto se


proporciona la ruta para todos los módulos de aplicaciones a continuación, si se
quiere distinguir entre los diferentes módulos de diferentes entornos (por ejemplo,

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

las siguientes modificaciones:

// Definir la ruta del proyecto


define ( 'APP_PATH', DIR . ' / . . / a p p l i c at i o n / ' ) ;
// archivo de base de bastidor de carga
require DIR . ' /. . / t h i n k p h p / b a s e . p h p ' ;
// archivo de enlace a la población actualadministraciónmódulo
\ Piense \ Ruta :: bind ( 'admin');
// cercaadministraciónMódulo de enrutamiento
\ Piense \ App :: ruta (false);
// de ejecución de aplicaciones
\ Piense \ App :: run () -> send ();

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

ThinkPHP5.0 enrutamiento flexible y no requiera la fuerza definida, se puede


resumir en las siguientes tres maneras:

, El modo Normal
Cerrada la vía en su totalidad mediante la URL modo por defecto PATH_INFO:

'Url_route_on' => falso,

Después de que la ruta está cortada, no va a resolver cualquier regla de


enrutamiento, utilice la URL de acceso PATH_INFO modo por defecto:

http: //serverName/index.php/module/controller/action/param/value / ...

Pero todavía se puede enlazar parámetros por el método de operación, las


operaciones aéreas de control de mano vacía y otras características para simplificar
la dirección URL.

Puede establecer los parámetros para cambiar el modo de configuración


url_param_type pathinfo el siguiente modo de adquisición de parámetros, el
nombre por defecto se encuentra en la resolución pares en apoyo de la orden de
las páginas de búsqueda de acuerdo a las variables de análisis, sólo se necesita
ser cambiado a:

// Con el fin de
resolver la variable => 1,
'Url_param_type'

Segundo modo, mezclado


rutas abiertas, y utilizar el encaminamiento predeterminado definir el modo de
PATH_INFO + mixto:

'Url_route_on' => verdad


'Url_route_must' => era,
falso,

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.

, El modo de aplicación de la tercera


rutas abiertas y establece la ruta deben ser definidos con el fin de acceder a:

'Url_route_on' => verda


'Url_route_must' => verda
dera,
dera,

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.

Inicio reglas de enrutamiento utilizando / se puede definir, por ejemplo, la


siguiente salida de enrutamiento Inicio Hola, mundo!

Ruta :: get ( '/', function ()


RETURn ' H o l a , m u n d o ! ';
});

Utilice este - 79 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta

La definición de ruta

Se inscriban reglas de enrutamiento


Registro de enrutamiento dinámico de una sola mano se puede utilizar para el
registro por lotes, el archivo de definición de ruta también se puede definir de
manera centralizada directamente
Registro.

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:

Ruta :: regla ( 'expresión de enrutamiento' 'dirección de encaminamiento', 'tipo de


solicitud', 'parámetros de encaminamiento (Array)', 'reglas variables (array)');
Inscribirse normas como las siguientes enrutamiento:

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:

HTTP: // servidor / nueva / 5

Las reglas de enrutamiento definen ThinkPHP5.0 es comenzar desde el directorio


raíz, en vez de en el nombre del módulo.

El enrutamiento automático de Ll:

http: // servidor / index / noticias / leer / id / 5

Y la dirección de acceso original expirará automáticamente.

expresión de enrutamiento (el primer argumento) apoya la identificación nombre de


Utilice este - 80 -
documento en
viendo las nubes
construcción de
La
definició
definición, tales como:
n de
ruta
// definicionesnuevoDe enrutamiento de llamadas
Ruta :: regla ([ 'nuevo', 'nuevo /: id'], 'index / Noticias / leer');

Utilice este - 81 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta

Tenga en cuenta que el enrutamiento de llamadas debe ser único, la definición se


puede utilizar para generar rápidamente la URL.

Regla puede especificar el tipo de método de la petición, no se especifica la solicitud


por defecto cualquier tipo, por ejemplo:

Ruta :: regla ( 'nuevo /: id', 'Noticias / actualización', 'post');

Representa una reglas de enrutamiento definidos válidos en la solicitud POST.

La petición del paquete


coloque el tipo: Tipo l l
l Descripción
l --- l --- l
lGETl petición GET l
lPOSTl Publicar
demanda l solicitud
lPUTl PUT l
lDELETE lDELETE solicitud l
l Mujeres Cualquier solicitud de tipo l l

Nota: El parámetro de tipo de solicitud

debe ser capitalizada.

El sistema proporciona un método simplificado para los diferentes tipos de peticiones


definidos reglas de encaminamiento, por ejemplo:

Ruta :: get ( 'nueva /: id', 'Noticias / leer'); / / definicionesGETnormas


solicitud de enrutamiento Ruta :: posterior ( 'nuevo /: id', 'Noticias /
actualización'); / / definicionesPOSTALnormas solicitud de enrutamiento
Ruta :: put ( 'nuevo /: id', 'Noticias / actualización'); / /
definicionesPUTnormas solicitud de enrutamiento Ruta :: delete ( 'nuevo /:
id', 'Noticias / delete'); / / definicionesDELETEnormas solicitud de
enrutamiento Ruta :: cualquier ( 'nuevo /: id', 'Noticias / leer'); / /
Si Todas
desealas solicitudes
definir sonde
reglas apoyados por reglas
enrutamiento de enrutamiento
petición GET poste de soporte lado, también
se puede utilizar:
Utilice este - 82 -
documento en
viendo las nubes
construcción de
La
definició
n de
Ruta :: regla ( 'nuevo /: id', 'Noticias / leer', 'GETIPOST');
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

Después de registrar múltiples reglas de encaminamiento, convertirá atravesado el


sistema registrado satisfacer el tipo de petición de reglas de encaminamiento, una
vez que el partido correcto Ll
El método de funcionamiento del controlador se inicia después de que las reglas de
encaminamiento de llamadas, sigue las reglas ya no detectada.

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:

'/' = > ' Í n d i c e ' , // Inicio Acceso de enrutamiento


'Mi' 'blog /: => 'Miembro / myinfo', / / dirección de
id' => enrutamiento estático
'Nuevo /: año /: mes /: día'
'Blog => 'Noticias
/ leer', / leen',de// Combinación
// Combinación
de direcciones estáticas y dinámicas
direcciones estáticas y dinámicas
': Usuario /: blog_id' => 'Blog / leer', // dinámica de direcciones
completa
La definición de las expresiones regulares en / como un delimitador de argumento
(sea cual sea su configuración INFO separador de ruta, asegúrese de que la
Definir reglas de enrutamiento cuando el sistema utiliza la segmentación de

expresión / URL parámetros). Cada parámetro a M: "parámetros se expresan en el

comienzo de las variables dinámicas y los parámetros correspondientes se método de

operación Ll obligado automáticamente.

definiciones opcionales
Apoyo para la definición opcional de parámetros de ruta, tales como:

'Blog /: año / [: el mes]' => 'Blog / Archivo',

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.

Después de que las reglas de encaminamiento anteriormente definidos, accede a la


siguiente dirección URL se puede emparejar correctamente ruta:

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

Los parámetros opcionales sólo se pueden poner reglas de enrutamiento Ll Por


último, si se utiliza el parámetro opcional en el medio, entonces la parte posterior
de las variables cambiará
Como un parámetro opcional.

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:

'Nuevo /: Cate $' => ' N ot i c i a s / c a t e g o r í a ' ,

http: //serverName/index.php/new/info

Que coincidirá con éxito,

http: //serverName/index.php/new/info/2

No va a coincidir con el éxito.

Si se adopta

'Nuevo /: Cate' => ' N o ti c i a s / c a t e g o r í a ' ,

Definir, a continuación, la URL para acceder a los dos enfoques se hacen coincidir con
éxito.

Si desea que todas las definiciones de enrutamiento está correspondencia exacta, se


puede configurar directamente

// Abrir la ruta definida coincidencia exacta mundial


'Route_complete_match' => verdadera,

Cuando se activa a nivel mundial y la coincidencia exacta, si un individuo no tiene que


utilizar el enrutamiento partido completo, los parámetros de enrutamiento puede ser
Utilice este - 80 -
documento en
viendo las nubes
construcción de
La
definició
añadido para cubrir una determinada
n de
Yi:
ruta

Ruta :: regla ( 'nuevo /: id', 'Noticias / leer', 'GETIPOST', [ 'complete_match' = >


false])
;

parámetros adicionales

Utilice este - 80 -
documento en
viendo las nubes
construcción de
La
definició
n de
ruta

En el tendido de apoyo argumentos adicionales pasados a saltar sobre la URL


parámetros adicionales referencia (no está dentro del parámetro que se pasa
implícitamente
Para operar en, y, a veces puede jugar un rol de seguridad dada Ll, mencionaremos
más adelante Ll). Por ejemplo:

'Blog /: id' => 'blog / lectura de estado = 1 & APP_ID = 5?',

Por valor reglas de enrutamiento definidas en los parámetros adicionales


anteriores son equivalentes. parámetros de estado son parte APP_ID
Que no existe en la URL, están implícitos los valores tradicionales, por supuesto, no
será necesario dar Ll, que puede ser utilizado sólo cuando sea necesario.

Utilice este - 81 -
documento en
viendo las nubes
construcción de
registro
a granel

registro a granel

reglas lote de enrutamiento de inscripción se pueden utilizar de dos maneras,


incluyendo métodos de interpolación se han registrado definición de configuración
de enrutamiento.

registro a granel
Si no desea que todos ellos registrado, puede utilizar el registro a granel, las reglas
son las siguientes:

Ruta :: regla ([ 'Las reglas de


enrutamiento1 '=>'parámetros de
dirección y enrutamiento'
'Las reglas de enrutamiento2 '=> ['parámetros de dirección y enrutamiento''parámetros a juego
(Array)''reglas de variable (Array)']
...
], '','tipo de solicitud''parámetros a juego (Array)''reglas variables');
Si las reglas dentro fuera de las manos mientras que los parámetros que emparejan
pasaron en las reglas variables a disposición, reglas de ruta de los definidos dentro
de los estudiantes de último
Effect, pero el parámetro de tipo de solicitud para las decisiones más exteriores, tales
como:

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} .

Si la solicitud de un tipo diferente de reglas de encaminamiento son similares, con


el fin de evitar el problema de conflicto s cable matriz, utilice una separada
métodos de petición definen ruta. Del mismo modo, también

podemos utilizar su verdadero yo varios métodos de registro para

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');

archivo de configuración de enrutamiento Definido


Además de apoyar el registro dinámico, por fin puede volver por el camino route.php
gama de directorio de la aplicación directa
Directa definir reglas de enrutamiento, el contenido del siguiente ejemplo:

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
+ ']],
];

Enrutamiento archivo de configuración de la regla define el efecto de la mano,


utilizando cualquier tipo de reglas de direccionamiento de registro.

configuración del robot de registro de enrutamiento dinámico puede coexistir de una


manera definida, por ejemplo:

nosotrose p e n s a r \ Ru t a ; R u t a : : r e g l a ( ' h o l a

/: nombre', 'index / índice / hola'); 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
+ ']],
];

Por defecto, sólo se carga un archivo de configuración de enrutamiento


route.php, si es necesario definir varios archivos de rutas,
Route_config_file para modificar los parámetros de configuración, por
ejemplo:

// los archivos de configuración de enrutamiento definidos (Array)


'Route_config_file' = > [ 'Ruta', ' R o u t e 1 ' , ' R o u t e 2 ' ] ,

Si existe la misma regla de encaminamiento, la muestra puede referirse a la forma


definida anterior registro por lotes.

Dado que el mecanismo de detección de problema, el rendimiento dinámico que el


Utilice este - 84 -
documento en
viendo las nubes
construcción de
registro
a granel
registro de configuración de ruta es más alto, realmente, especialmente cuando se
mezclan múltiples tipos de petición definidos.

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:

regla de variables globales


Establecer una reglas variables globales, válidas todas las rutas:

// establecernombrereglas Variables (definida usando regular)


Ruta :: modelo ( 'nombre', '\ w +');
// Lotes de apoyo complemento
Ruta :: modelo ([
'Nombre' => '\ W +',
'Id' => '\ D +',
]);

regla de las variables locales


reglas de variables locales, válida únicamente en la ruta actual:

// definicionesGETnormas solicitud de enrutamiento y establecernombrereglas variables


Ruta :: get ( 'nueva /: nombre', 'Noticias / leer', [], [ 'nombre' => '\ w +']);

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.

Reglas URL completa


Si desea descartar inspección de toda la url reglas variables, tales como:
URL, puede ser

// definicionesGETnormas solicitud de enrutamiento Y un juego completoURLreglas variables


Ruta :: get ( 'nueva /: id', 'Noticias / leer', [], [ ' url '=>' Nuevo \ / \ w + $ ']);

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 +']);

Ventajas de una combinación de variables hay ningún delimitador de enrutamiento


regla fija, se pueden mezclar las reglas variables necesarias, tales como enrutamiento
Las reglas pueden ser cambiadas a la siguiente clase de apoyo:

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 +']);

Si es necesario utilizar la variable opcional, puede utilizar:

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 + )

falsa versión v5.0.3 + fomento de condiciones ajax / pjax / https.

Estos parámetros de enrutamiento se pueden mezclar, siempre y cuando no hay


ninguna comprobación de parámetros artículo no se pasa, la ruta actual no se
llevará a efecto, continúan detectando reglas de enrutamiento atrás.

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

// Sólo detectar reglas de enrutamientoGETLa solicitud es válida


Ruta :: cualquier ( 'nuevo /: id', 'Noticias / leer', [ 'método' => 'conseguir']);
// Sólo detectar reglas de enrutamientoGETyPOSTALLa solicitud es válida
Ruta :: cualquier ( 'nuevo /: id', 'Noticias / leer', [ 'método' => 'getIpost']);

sufijo de URL
// definicionesGETnormas solicitud de enrutamiento y establecerURLsufijohtmlcuando efectiva
Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'ext' => 'html']);

Soportar múltiples sufijo coincidente, por ejemplo:

Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'ext' => 'shtmlIhtml']);

Puede establecer prohibir el acceso al sufijo URL, por ejemplo:

// definicionesGETnormas solicitud de enrutamiento Y establecer la


prohibiciónURLsufijopng,jpgygifacceso
Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'deny_ext' => 'jpgIpngIgif']);

V5.0.7 Versión de lo anterior, ext mano deny_ext Parámetro permite nula


ajuste, respectivamente, y no debe permitir ningún acceso sufijo sufijo.

la detección de dominio
El apoyo a nombre de dominio completo o subdominio para la prueba, por ejemplo:

// La detección nombre de dominio completo solamentenews.thinkphp.cnCuando la ruta de


acceso es válida
Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'dominio' => 'news.thinkphp.cn']);
// detección de subdominio
Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'dominio' => 'noticias']);

la inspección de HTTPS
Soporte detectar si el actual acceso HTTPS

Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'https' => true]);

La detección de comportamiento frente


Es compatible con el comportamiento de enrutamiento para detectar si un partido si
el comportamiento del método devuelve falsa representación de la regla de
Utilice este - 91 -
documento en
viendo las nubes
construcción de
parámet
ros de
encaminamiento actual no es válido.
ruta

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']);

clase de comportamiento se define como sigue:

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 ()

si ( 'usuario / 0' == petición () ->


url) () RETURn f a l s a ;
}
}
}
comportamiento de ejecución trasera
Se puede realizar para una ruta o un comportamiento de enrutamiento de paquetes
definido en la parte trasera, representa la fila después de enrutamiento emparejado
con éxito, la ejecución
Por ejemplo:

Ruta :: get ( 'usuario /: id', 'Usuario / leer', [ 'after_behavior' => '\ app \ index \
comportamiento
\ ReadInfo ']);

Manaka \ app \ index \ comportamiento \ ReadInit clase de comportamiento se define como


sigue:

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 \

Usuario; class ReadInfo


Public f u n c i o n r u n ()
$ Id = s o l i c i t u d ( ) - > r u t a ( ' i d ' ) ;
solicitud () -> usor = U s u a r i o : : g e t ( $ i d ) ;
}
}
Si persona compatible Ll nueva /: Después de vía ID, el método run de la clase de
comportamiento de ejecución, es el parámetro de dirección de enrutamiento, puede
dinámicamente

Utilice este - 93 -
documento en
viendo las nubes
construcción de
parámet
ros de
Cambio.
ruta

Detección de devolución de llamada


También puede apoyar el uso de la función de enrutamiento de detección, si la
función devuelve false si la regla de encaminamiento actual no es válido, como:

Utilice este - 94 -
documento en
viendo las nubes
construcción de
parámet
ros de
ruta

Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'callback' =>


'my_check_fun']);

Combinar parámetros adicionales


Se utiliza típicamente cuando una coincidencia completa, si los parámetros
adicionales se combinan como un valor variable, por ejemplo:

Ruta :: get ( 'nueva /: $ name', 'Noticias / leer', [ 'merge_extra_vars' => true]);

http: // servidor / nueva / ThinkPHP / hola

Se será igualado Ll, y el valor de la variable nombre ThinkPHP / hola.

El archivo de configuración para añadir los parámetros de


enrutamiento
Si utiliza un archivo de configuración, puede utilizar:

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
']],
];

Enrutamiento modelo de unión ( V5.0.1 )


modelo Bound se puede adaptar en la ruta actual, el objeto detrás de la misma a
través de un método de inyectar automáticamente para obtener.

Ruta :: get ( 'nueva /: $ name', 'Noticias / leer', [ 'bind_model' => [ 'usuario',


'nombre']]);

Referencia Más detalles pueden solicitar -> inyección de dependencias.

solicitud de ruta caché


El almacenamiento en caché se puede realizar para la petición de encaminamiento
actual, por ejemplo:

Ruta :: get ( 'nueva /: $ name', 'Noticias / leer', [ 'caché' => 3600]);

Representa la solicitud actual tampón de enrutamiento 3600 segundos.

Utilice este - 90 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento

dirección de enrutamiento

dirección de enrutamiento definido


edició Novedades
n
5.0.4 método Ll de enrutamiento controlador
de mano clase entrante apoya
Direcciónparámetros
de enrutamiento representa la máxima expresión definido enrutamiento de
adicionales
enrutamiento Ll necesidad de abordar, así como algunos parámetros adicionales
necesarios para apoyar la siguiente 5
Definir maneras:

forma definida Ke define fórmula


Forma de realización 1: Ll '[Módulo / controlador / Operación]? parámetro adicional valores 1
enrutamiento módulo /
Opción 2: Redirigir = 1 y 2 el valor
'Direcciones del(301s
externa' parámetro adicional
por defecto) = 2 ...externa',
o [ 'dirección ' 'código de
controlador
dirección de3: El método redireccionamiento']
Realización '@ [Módulo / controlador /] Operación'
encaminamiento
de controlador Ll
Realización 4: Elde
método '\ Completo espacio de nombres :: clase método estático' o '\ @ clase de
encaminamiento
para la clase5:de Ll método dinámico
Realización función de definición de la completo espacio
función de de (apoyo
cierre nombres'de paso de parámetros)
enrutamiento
cierre ruta Ll Ll
5 cierto en la forma en que apoyará el siguiente capítulo cerrado en la descripción
detallada del paquete.

módulo de enrutamiento Ll / controlador / operación


Este es el tipo más comúnmente utilizado de enrutamiento, la regla de
encaminamiento asociada con la condición del bloque Ll, el controlador de
accionamiento manual, a continuación,
operaciones relacionadas realizadas por el horario de clases de aplicaciones.

Al mismo tiempo la operación de inicialización del módulo se llevará a cabo (el


prospecto configurado para llevar a vender el archivo se carga pública, la definición
de operaciones de carga, paquetes de idiomas de carga, etc.).

Ke dirección de enrutamiento es:

[Módulo / controlador /] Operación? 1 = 1 y el valor del parámetro del


valor de parámetro = 2 ... 2
reglas de análisis se resuelven de la operación se inicia, el controlador continuación,
analiza el último módulo de análisis sintáctico, por ejemplo:
Utilice este - 91 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
// Ruta al módulo por defecto o vinculante
iento
'Blog /: id' => 'blog / leer',
// ruta aíndicemódulo
'Blog /: id' => 'index / blog / leer',

Categorías del blog se definen como sigue:

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 ;.
}
}

Apoyar controlador de dirección de enrutamiento de múltiples etapas, utilizando la


siguiente manera ajustes:

'Blog /: id' => 'index / group.blog / lectura'

Ll representa la siguiente clase de controlador de ruta,

index / controlador / grupo / Blog

Categorías del blog se definen como sigue:

namespace a p p \ i n d ex \ c o n t r o l a d o r \

grupo; class Blog


Public f u n c i o n l e e r ( $ i d )
return ' L e a : ' $ i d ;.
}
}

Ll también puede soportar un módulo de enrutamiento dinámico, el controlador u


operador, por ejemplo:

// a c t i o nEl método de funcionamiento como el


valor de la variable de sucesor ': Acción / blog /:
id' = > ' Í n d i c e / b l o g / : a c t i o n '
// sucesor variableíndiceEl módulo controlador y método de operación
': C /: A' => ' Í n d i c e / : c / : a '

Si la función de enrutamiento apagado, el defecto se encuentra de acuerdo con la


regla de planificación de análisis de la URL.

De esta manera, cuando el parámetro adicional salta apoyo de


enrutamiento parámetro adicional pasada a (parámetro adicional se
Utilice este - 93 -
documento en
viendo las nubes
construcción de
direcció
n de
refiere no dentro de los parámetros de URL, oculto Entrantes operado
enrutam
iento
en necesidad, a veces es posible jugar el papel de seguridad dada Ll, mencionaremos
más adelante Ll). Por ejemplo:

'Blog /: id' => 'blog / lectura de estado = 1 & APP_ID = 5?',

Utilice este - 94 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento

Las reglas de enrutamiento anteriores definidos en los parámetros adicionales


parámetros de estado de URL son APP_ID mano que no existe, se oculta
los valores tradicionales de la fórmula, por supuesto, no necesita ser dada Ll, que
sólo se pueden utilizar cuando sea necesario.

método de operación de enrutamiento Ll


Ke dirección de enrutamiento es:

@ [/ Controlador / módulo] Operación

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:

'Blog /: id' => '@ índice / blog / leer',

El sistema dirigirá la ejecución

:: cargador de acción ( 'index / blog / leer');

Directorio \ app \ index \ Controlador \ método de clase blog es equivalente a llamar leer
directamente.

Categorías del blog se definen como sigue:

namespace a p p \ i n d ex \

controlador; class Blog


Public f u n c i o n l e e r ( $ i d )
return ' L e a : ' $ i d ;.
}
}

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.

método Ll para la clase de enrutamiento


dirección verificada fórmula encaminamiento (método dinámico):

\ Clases de espacio de nombres \ @ nombre de la clase nombre del


método

Utilice este - 96 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento

O (método estático)

\ Clase de espacio de nombres \ nombre del método nombre de la clase


::
De esta manera más progresiva, cualquier clase puede apoyar la aplicación de un
método, en lugar del método de operación del controlador de ejecución, por
ejemplo,
Tales como:

'Blog /: id' => '\ app \ index \ servicio \ Blog @ lectura',

Es \ app \ index \ servicio \ método de clase Blog de ejecución leer.


Además de apoyar la aplicación de un método estático, como por ejemplo:

'Blog /: id' => '\ app \ index \ servicio \ Blog :: leer',

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' =>,

Ll redirección de direcciones de enrutamiento


redirección de direcciones externa debe "comenzar con dirección de M / o http.

Si la dirección de enrutamiento empieza con M / "o Mhttp" será considerado Una


dirección de redirección o la dirección externa, por ejemplo:

'Blog /: id' => '/ blog / leer / id /: id'

mano

'Blog /: id' => 'blog / leer'

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

/ Miembro / avatar / id / 123 pequeña, que sólo se puede utilizar:

'Avatar /: id' => '/ miembro / avatar / id /: id_small'

Utilice este - 98 -
documento en
viendo las nubes
construcción de
direcció
n de
enrutam
iento

La dirección de redirección usando la dirección de encaminamiento, entonces, si S


una variable dinámica, una variable dinámica se puede utilizar directamente.

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:

'Blog /: id' => 'http://blog.thinkphp.cn/read/:id'

Representa el sitio actual (posiblementehttp://thinkphp.cn ) El / 123 dirección del blog


simplemente redirige Ll
http://blog.thinkphp.cn/read/123.

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:

Ruta :: recursos ( 'blog', 'Índice / blog');

O utilizar el archivo de resto Añadir definición de la ruta del recurso:


configuración de
enrutamiento

return [
// recursos de enrutamiento definidos
' resto '=> [
// puntosíndicemóduloBlogcontrolador
'Blog' => 'index / blog',
],
// La definición de ruta común
'Hola /: id' => 'index / hola',
]

7 se registra automáticamente después de establecer reglas de enrutamiento, como


sigue:

marca tipo de reglas de El método


índice solicitud
GET enrutamiento
Blog correspondiente
índice de
Generación
blog / crear operación (por
crear GET crear
defecto)
guardar POSTAL Blog guardar
leer GET blog /: id leer
editar GET blog /: id / editar
editar
actualiza PUT blog /: id actualización
ción
borrar BORRAR blog /: id borrar

punto específico determinado por la dirección de encaminamiento del controlador,


tales como el ajuste anterior, haría índice del módulo controlador del blog
correspondiente, se
Sólo es necesario crear más método correspondiente de operación para el
Utilice este - 100
documento en -
viendo las nubes
construcción de
recursos
de
enrutam
iento
controlador blog puede apoyar visite la siguiente URL:

http: // servidor / blog /


http: // servidor / blog / 128
http: // servidor / blo / 28 /
editar

controlador Blog método correspondientes son los siguientes:

Utilice este - 101


documento en -
viendo las nubes
construcción de
recursos
de
enrutam
iento

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)
} }

parámetros de identificación puede cambiar el nombre predeterminado, por ejemplo:

Ruta :: recursos ( 'blog', 'Índice / blog', [ 'var' => [ 'blog' => 'blog_id']]);

El controlador definido método necesita ser ajustada como sigue:

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)
} }

El método también puede ser definido (identificado) en la definición de


encaminamiento recurso lleva a cabo cuando, por ejemplo:

// Sólo se permiteindex r e a d e d i t u p d a t e cuatro operadores Ruta :: recursos (


'blog', 'Índice / blog', [ 'única' => [ 'índice', 'leer', 'editar', 'ACTUALIZACIÓN']]);
// excluiríndiceydeleteoperativo
Ruta :: recursos ( 'blog', 'índice / blog', [ 'excepción' => [ 'índice', 'eliminar']]);

identificador de rutas de recursos no puede cambiarse, pero la ruta generada


correspondiente al método de operación de la mano puede ser modificado.

Si necesita cambiar la ruta de un identificador de recursos correspondiente a la


operación, puede utilizar el siguiente método:

Utilice este - 102


documento en -
viendo las nubes
construcción de
recursos
de
enrutam
Ruta :: resto ( 'crear', [ 'GET', ' / A ñ a d i r ' , ' a g r e g a r ' ] ) ;
iento

Utilice este - 103


documento en -
viendo las nubes
construcción de
recursos
de
enrutam
iento

Después del ajuste, el acceso URL es:

http: // servidor / blog /


crear convertirse en http: //
servidor / blog / añadir

Crear páginas del blog correspondientes método de funcionamiento se ha convertido


en añadir.

Para apoyar cambios masivos, como sigue:

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:

Ruta :: recursos ( 'blog.comment', 'index / comentario');

Se puede acceder a la siguiente dirección:

http: // servidor / blog / 128 /


comentario / 32 http: // servidor / blog /
128 / comentario / 32 / editar

Generar distribución Reglas son:

blog /: blog_id / comentario


/: Blog / Identificación:
blog_id / comentario /: id /
editar
controlador comentario operación correspondiente es como sigue:

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 )
}
}

Utilice este - 104


documento en -
viendo las nubes
construcción de
recursos
de
orden de las páginas parámetros puede ser arbitrariamente proceso de editar, pero
enrutam
debe cumplir con los requisitos definidos nombre del parámetro.
iento

Utilice este - 105


documento en -
viendo las nubes
construcción de
recursos
de
enrutam
iento

Si realmente necesita cambiar el


nombre de la variable, puede utilizar:
// Cambiar los recursos anidados para el enrutamientoBlogLas variables de recurso llamados
recursosblogid
Ruta :: recursos ( 'blog.comment', 'index / comentario', [ 'var' => [ 'blog' => 'blogid']
]);

controlador de comentario correspondiente al método de operación se cambió a:

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 )

}
}

Utilice este - 106


documento en -
viendo las nubes
construcción de
enrutam
iento de
acceso
directo

enrutamiento de acceso directo

enrutamiento rápida le permite derivados rápidamente al controlador registrado, y


se puede configurar para diferentes tipos de peticiones métodos de prefijo, tales
como:

// parausuarioEl controlador ha establecido la ruta de acceso directo


Ruta :: controlador ( 'usuario', 'índice / User');

El control del usuario se define como sigue:

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

} }

Podemos acceder a través de la siguiente URL

get http: // localhost /


usuario / Información get http:
// localhost / usuario /
teléfono POSt http: //
localhost / usuario /
Información put http: //
localhost / usuario /
Información
delete http: // localhost / usuario / Información
Utilice este - 100 -
documento en
viendo las nubes
construcción de
enrutam
iento de
acceso
directo

Utilice este - 101 -


documento en
viendo las nubes
construcción de
alias de
enrutam
iento

alias de enrutamiento

Enrutamiento función alias puede utilizar reglas, reglas de enrutamiento


definidos en la serie de lotes.

Por ejemplo, queremos utilizar todas las operaciones de usuario puede acceder al
controlador del módulo de índice de usuario, puede utilizar:

// u s o r ruta alias Índice / Usor controlador


Ruta :: alias ( 'usuario', 'índice / User');

Si el perfil se define route.php en el encaminamiento, utilice:

return [
' alias ' = > [
' U s u a r i o '=> 'Índice /
], usuario,
];

La realización anterior es equivalente a la mano.

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.

alias de enrutamiento pueden apuntar a cualquier dirección de encaminamiento


válida, señalando a las siguientes clases, por ejemplo,

Utilice este - 102 -


documento en
viendo las nubes
construcción de
alias de
enrutam
// u s o r Enrutamiento alias apunta usuarioclase del
iento
controlador Ruta :: alias ( 'usuario', '\ app \ index
\ controlador \ Usuario');

Enrutamiento de alias no es compatible con el tipo de variables condicionales


parte de enrutamiento, simplemente para acortar la URL, y cuando la definición de
Los candidatos deben tomarse para evitar la ruta de la mano para generar una
fuga mixta.

Utilice este - 103 -


documento en
viendo las nubes
construcción de
alias de
enrutam
iento

Soporte para condiciones de enrutamiento de enrutamiento de alias como:

// u s o r ruta alias index / usor controlador


Ruta :: alias ( 'usuario', 'índice / usuario', [ 'ext' => 'html']);

O utilizar el archivo de configuración de enrutamiento:

return [
' alias ' = > [
' U s u a r i o '=> [ 'Índice / user', [ 'ext' =>
], 'html']],
];

Operación lista de negro ( v5.0.2 + )


método de enrutamiento Alias de lista blanca de soporte de operaciones o
mecanismo lista negra, por ejemplo:

// u s o r ruta alias index / usor controlador


Ruta :: alias ( 'usuario', 'índice /
usuario', [ 'ext' => 'html',
'Permitir' => 'índice, leer, editar, borrar',
]);

O mediante el uso de un mecanismo de listas negras

// u s o r ruta alias index / usor controlador


Ruta :: alias ( 'usuario', 'índice /
usuario', [ 'ext' => 'html',
'Salvo' => 'guardar, borrar',
]);

El método de funcionamiento y el apoyo estableciendo el tipo de petición, por


ejemplo:

// u s o r ruta alias index / usor controlador


Ruta :: alias ( 'usuario', 'índice /
usuario', [ 'ext' => 'html',
'Permitir' => 'índice, guardar, borrar', 'método' => [ 'índice'
=> 'GET', 'salvar' => 'Post', 'eliminar' => 'Borrar'],
]);

Utilice este - 104 -


documento en
viendo las nubes
construcción de
alias de
enrutam
iento

Utilice este - 105 -


documento en
viendo las nubes
construcción de
enrutam
iento de
paquete
s

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

completas. Por ejemplo, hemos definido las siguientes dos

reglas de encaminamiento, entonces

'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']],

Ll puede fusionar un grupo de blogs

'[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:

Ruta :: grupo ( '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']],
]);

Un enrutamiento de paquetes puede definir la configuración de parámetros, por


ejemplo alguna ruta común:

Ruta :: grupo ( 'blog', [


': Id' => [ ' B l o g / l e e r ' , [ ] , [ ' I d ' = > ' \ D
+']], ': nombre' => [ 'Blog / leer', [],
], [ 'Método' => 'conseguir', 'ext' => 'html']);

Registro apoya paquetes cierres de ruta, por ejemplo:

Utilice este - 106 -


documento en
viendo las nubes
construcción de
enrutam
iento de
Ruta :: grupo ( 'blog', function () Ruta :: cualquier ( ':
paquete
s id', 'blog / leer', [], [ 'id' => '\ d +']); Ruta ::
cualquier ( ' : nombre '' blog / leer '[], [' nombre
'=>' \ w + ']);
}, [ 'Método' => 'get', 'ext' => 'html']);

Utilice este - 107 -


documento en
viendo las nubes
construcción de
enrutam
iento de
paquete
s

Aunque sólo sea para establecer algunos parámetros para alguna ruta común
reglas de enrutamiento, puede utilizar:

Ruta :: grupo [ 'método' => 'conseguir', 'ext' => 'html'] (, () la


función Ruta :: cualquier ( 'blog /: id', 'blog / leer', [], [
'id' => '\ d +']); Ruta :: cualquier ( 'blog /: nombre', 'blog /
leer', [], [ 'nombre' => '\ w +']);
});

el direccionamiento de paquetes anidados soportes, por ejemplo:

Ruta :: grupo [ 'método' => 'conseguir', 'ext' => 'html'] (, ()


la función Ruta :: grupo ( 'blog', la función ()
Ruta :: cualquier ( 'blog /: id', 'blog / leer', [], [ 'id' =>
'\ d +']); Ruta :: cualquier ( 'blog /: nombre', 'blog / leer
'[], [' nombre '=>' \ w + ']);
}
});

Utilice este - 108 -


documento en
viendo las nubes
construcción de
ruta
SRTA

ruta SRTA

Miss global de enrutamiento


Si desea realizar rutas del conjunto tira después de todas las reglas de
enrutamiento Ll partidos, puede utilizar la función de encaminamiento Miss,
Sólo es necesario definir el archivo de configuración de enrutamiento:

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

Ruta :: fallo ( 'público / Miss');

Cuando no hay ninguna coincidencia Ll todas las reglas de enrutamiento,


encaminado Ll pública / Miss dirección de enrutamiento.

Enrutamiento de paquetes SRTA


apoyo SRTA enrutamiento de paquetes independiente, por ejemplo, define como
sigue:

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:

Utilice este - 109 -


documento en
viendo las nubes
construcción de
ruta
SRTA
Ruta :: grupo ( 'blog', function () Ruta :: regla ( ': id',
'blog / leer', [], [ 'id' => '\ d +']); Ruta :: regla ( '
: nombre '' blog / leer '[], [' nombre '=>' \ w + ']);
Ruta :: fallo (' blog / señorita);
}, [ 'Método' => 'get', 'ext' => 'html']);

Utilice este - 110 -


documento en
viendo las nubes
construcción de
ruta
SRTA

Utilice este - 111 -


documento en
viendo las nubes
construcción de
Soporte
para
cierres

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:

Ruta :: get ( 'hola', function ()


RETURn ' H o l a , m u n d o !' ;
});

el paso de parámetros
Cuando el cierre definido parámetro apoyo que pasa, por ejemplo:

Ruta :: get ( 'hola /: nombre', function ($


name) RETURn ' H o l a , ' $ n o m b r e . ;
});

El nombre de una variable dinámica se define reglas de enrutamiento función de


cierre nombre del parámetro, independientemente del orden.

Por lo tanto, la dirección URL si volvemos a visitar son:

http: // servidor / hola / ThinkPHP

La salida del navegador resultado es:

Hola, ThinkPHP

Utilice este - 112 -


documento en
viendo las nubes
construcción de
Enlazar
enrutam
iento

Enlazar enrutamiento

Se puede utilizar una ruta de enlace URL simplificado o definir reglas de


encaminamiento, soporte de unión de la siguiente manera:

LL módulo / controlador / operación de enlace


La unión Ll módulo / controlador / acción, soportando hasta unión nivel operativo Ll,
por ejemplo en el archivo de configuración de enrutamiento URL actual
Añadir:

// 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');

atamos el módulo controlador índice de blogs, que


Acceder desde la dirección URL original

http: // servidor / index / blog / leer / id / 5

Se puede simplificarse

http: // servidor / lectura / id / 5

Si define el enrutamiento

Ruta :: get ( 'index / blog /: id', 'index / blog / leer');

A continuación, visitar la URL se convierte

http: // ServerName / 5

Utilice este - 110 -


documento en
viendo las nubes
construcción de
Enlazar
ll fijaciones de espacio de nombres
enrutam
iento
Ll enlazar a la URL actual a un espacio de nombres especificado, por ejemplo:

Utilice este - 110 -


documento en
viendo las nubes
construcción de
Enlazar
enrutam
iento

// Encuadernación espacio de nombres


Ruta :: bind ( '\ app \ index \ controlador', 'espacio de nombres');

Por lo tanto, sólo tenemos que pasar a la siguiente

http: // servidor / blog / leer / id / 5

Se puede acceder directamente a la \ app \ index \ lectura controlador de


método \ Blog categoría.

La unión de clase Ll
La URL actual Ll une directamente a una determinada categoría, por ejemplo:

// Con destino a la clase


Ruta :: bind ( '\ app \ index \ Controlador \ Blog', 'clase');

Por lo tanto, sólo tenemos que pasar a la siguiente

http: // servidor / lectura / id / 5

Se puede acceder directamente a la \ app \ index \ lectura controlador de


método \ Blog categoría.

Nota: Después de la unión Ll parte del espacio de nombres de


clase, no se llevará a cabo la inicialización del módulo.

Encuadernación archivo de entradas


Si tenemos que presentar un módulo de unión a la entrada, puede utilizar las dos
formas siguientes:

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:

Utilice este - 111 -


documento en
viendo las nubes
construcción de
Enlazar
enrutam
// directorio de aplicaciones personalizadas
iento
define ( 'APP_PATH', DIR . ' / . . / a p p l ic a t i o n / ' ) ;
// con destino aíndicemódulo
define ( 'BIND_MODULE', 'index');
// Cargar Archivo guía marco
require DIR . ' /. . / t h i n k p h p / s t a r t . p h p ' ;

unión de entrada automática

Utilice este - 112 -


documento en
viendo las nubes
construcción de
Enlazar
enrutam
iento

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:

// archivos abiertos automáticamente población módulo de unión


'Auto_bind_module' => verdadera,

Cuando volvimos a añadir un documento de entrada pública / demo.php,


el contenido de la mano pública / index.php Muestra:

// directorio de aplicaciones personalizadas


define ( 'APP_PATH', DIR . ' / . . / a p p l ic a t i o n / ' ) ;
// Cargar Archivo guía marco
require DIR . ' /. . / t h i n k p h p / s t a r t . p h p ' ;

Pero cuando demo.php acceso real, lo real se ha enlazado automáticamente Ll un


módulo de demostración.

Utilice este - 113 -


documento en
viendo las nubes
construcción de
modelo
de
unión

modelo de unión

enlace de modelos ( V5.0.1 )


reglas de encaminamiento de paquetes de soporte mano los datos del modelo, tales
como la unión:

Ruta :: regla ( 'hola /: id', 'index / índice /


hola', 'GET',
'EXT' [ => 'Html',
'Bind_model' => [
'usuario' => '\ App \ index \
], modelo \ Usuario',
]);

Automáticamente a la ruta actual está obligado a Identificación del Usuario valor


de la variable de la corriente de enrutamiento de datos modelo.

Se puede definir la consulta los datos del modelo, por ejemplo:

Ruta :: regla ( 'hola /: Nombre /: id', 'index / índice /


hola', 'GET',
'EXT' [ => 'Html',
'Bind_model' => [
'usuario' => [ '\ App \ index \ modelo \
], Usuario', 'id y name']
]);

Indica que el valor de la mano-Identificación del nombre de la consulta igual a


las variables de enrutamiento de datos de modelos actuales.

Los cierres pueden ser utilizados para devolver el objeto modelo de datos

Ruta :: regla ( 'hola /: id', 'index / índice /


hola', 'GET',
'EXT' [ => 'Html',
'Bind_model' => [
'usuario' => función ($ param)
Modo $l = N e b r a s k a w \ A p p \ i n d e x \
modelo \ Usuario; return Modelo- $>
donde ($ param) -> find ();
], }
]);

El cierre es de los parámetros actuales de las variables solicitud de URL de

Utilice este - 114 -


documento en
viendo las nubes
construcción de
modelo
de
información de función.
unión

O puede utilizar el código siguiente en un controlador de inyección de dependencia


adquiere:

Utilice este - 115 -


documento en
viendo las nubes
construcción de
modelo
de
unión

solicitud () -> usuario;

modelo de unión en el tejido puede ser inyectado directamente en el controlador


automático o un método de método de funcionamiento, de referencia puede
solicitar específicamente Cap
sección dependiente de la inyección.

Utilice este - 116 -


documento en
viendo las nubes
construcción de
enrutam
iento de
dominio

enrutamiento de dominio

ThinkPHP soporta dominio completo, sub-dominio de enrutamiento mano manos


desplegar función de unión de IP, pero también puede simplificar la dirección URL
para el inicio de Ll Con.

Para permitir el despliegue de la función de enrutamiento de dominio, primero tiene


que abrir:

'Url_domain_deploy' = > verdadero

Reglas de nombres de dominio personalizados apoyar el despliegue de dos maneras:


el registro dinámico definiciones de configuración de la mano.

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:

// b l o gSubdominio con destino


aBlogmódulo Ruta :: dominio (
'blog', 'Blog');
// El nombre de dominio completo está obligado aadministraciónmódulo
Ruta :: dominio ( 'admin.thinkphp.cn', 'admin');
// I P con destino aadministraciónmódulo
Ruta :: dominio ( '114.23.4.5',
'admin');
Después de la unión del blog subdominio, regla de acceso URL es:

// el originalURLacceso
http://www.thinkphp.cn/blog/article/read/id/5
// con destino aBlogacceso subdominio
http://blog.thinkphp.cn/article/read/id/5

Cuando la obligación de añadir parámetros por defecto de apoyo, tales como:

// b l o gSubdominio con destino aBlogmódulo Ruta


:: dominio ( 'blog', '? Blog var =
ThinkPHP');

Utilice este - 117 -


documento en
viendo las nubes
construcción de
enrutam
iento de
En adición módulo de unión a Ll, sino que también introdujo implícitamente
dominio
a = 'ThinkPHP' variable $ _GET [ 'var'].

controlador Ll apoya la unión directa, por ejemplo:

// b l o gSubdominio con destino


aíndicemóduloBlogcontrolador Ruta ::
dominio ( 'blog', 'Índice / blog');

Utilice este - 118 -


documento en
viendo las nubes
construcción de
enrutam
iento de
dominio

cambios de dirección URL de acceso a:

// el originalURLacceso
http://www.thinkphp.cn/index/blog/read/id/5
// con destino aBlogacceso subdominio
http://blog.thinkphp.cn/read/id/5

Si su nombre de dominio sufijo es bastante especial, por ejemplo, se com.cn o


nombre de dominio net.cn como, usted tiene que configurar:

'Url_domain_root' => 'thinkphp.com.cn'

Pan-despliegue de dominio
Puede apoyar el despliegue de reglas pan-dominio, tales como:

// Pan dominio de unión al nombre de dominio secundariolibromódulo


Ruta :: dominio ( '*', '* = nombre del libro?');

La siguiente URL de acceso será un acceso directo al módulo de libro

http://hello.thinkphp.cn
http://quickstart.thinkphp.cn

Y directamente a través $ GET [ 'nombre'] Variable Obtiene la corriente pan-dominio.

Apoyo a la implementación de tres pan-dominio, por ejemplo:

// La unión al dominio Pan-nivelusuariomódulo


Ruta :: dominio ( '* El usuario', '? Nombre de usuario = *');

Si nos vamos a la siguiente dirección URL:

http://hello.user.thinkphp.cn

Al mismo tiempo, además de módulo de acceso$ de los [usuarios,


_GET la voluntad
'nombre'] = a los
' H ol a'
valores de entrada

Utilice este - 119 -


documento en
viendo las nubes
construcción de
enrutam
iento
En losdeparámetros de configuración que se pasa el tiempo, si es necesario utilizar el
dominio
nombre de dominio pan-actual como un parámetro se puede ajustar directamente al
botón hembra M".

Utilice este - 120 -


documento en
viendo las nubes
construcción de
enrutam
iento de
dominio

Actualmente, sólo dos nombres de dominio mano de tres nombres de dominio de


las implementaciones de pan-dominio.

Configuración define la forma en


Además del registro dinámico, dominio también soporta reglas de implementación
directos definidas en el archivo de configuración de enrutamiento, por ejemplo:

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
]

Encuadernación dirección de dominio


A principios miramos reglas de implementación de dominio ll:

// b l o gSubdominio con destino


aBlogmódulo Ruta :: dominio (
'blog', 'Blog');

La verdad es el módulo de unión de dominio manera Ll, no se unen realmente real su


camino.

ll fijaciones de espacio de nombres


// b l o gespacio de nombres de dominio sub-vinculante
Ruta :: dominio ( 'blog', '\ app \ Blog \
controlador');

La unión de clase Ll
// b l o gSubdominios se unen a la clase Ruta :: dominio (
'blog', '@ \ app \ Blog \ Controlador \ artículo');

Encuadernación función de cierre Ll


Si lo desea, puede también directamente vinculante Ll dominio a una función de
cierre, por ejemplo:

Utilice este - 121 -


documento en
viendo las nubes
construcción de
enrutam
iento de
// b l o gla función de cierre de unión
dominio
subdominio Ruta :: dominio (
'blog', function ()
echo ' H o l a ' ;
return [ ' A t a ' = > ' mó d u l o ' , ' m ó d u l o ' = > ' b l o g ' ] ;
});

Utilice este - 122 -


documento en
viendo las nubes
construcción de
enrutam
iento de
dominio

Vinculante dominio de la función de cierre Ll es una especie de secuestro de bienes,


el cierre puede funcionar mecanismo vinculante de registro en el interior dinámico o
Notas reales E
Reserve nueva ruta, por ejemplo:

Ruta :: dominio ( 'www', f u n c i ó n ( )


// reglas de enrutamiento dinámico para el registro
de nombres de dominio Ruta :: regla ( 'nuevo
/: id', ' Í n d i c e / n o t i c i a s / l e e r ' ) ; R u t a
:: regla ( ': el usuario', 'Índice /
usuario / Información');
});
Si no desea continuar, directamente en la función de cierre dentro de la suspensión
de la ejecución.

// b l o gSubdominio con destino a la


función de cierre Ruta :: dominio (
'blog', function ()
salida ( 'hola');
});

Encuadernación reglas de enrutamiento


LL dominio de unión puede variar reglas de encaminamiento especificadas, tales
como:

Ruta :: 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',
]);

Si el archivo de configuración, la configuración se puede encontrar de acuerdo con la


siguiente forma:

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
]

Utilice este - 123 -


documento en
viendo las nubes
construcción de
enrutam
iento de
ruta más detallada está ligada a la información consulta el capítulo vinculante.
dominio

Utilice este - 124 -


documento en
viendo las nubes
construcción de
enrutam
iento de
dominio

Utilice este - 125 -


documento en
viendo las nubes
construcción de
la
generac
ión de
URL

la generación de URL

ThinkPHP5.0 sistema de apoyo generada dirección URL de enrutamiento, y el apoyo


a todo el enrutamiento, así como la solución perfecta para resolver la dirección de
encaminamiento inversa, ya no tienen que cambiar la definición de enrutamiento
cambia de manos 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:

Url :: acumulación ( 'expresión dirección' [ 'parámetro'], [ 'URL sufijo'], [ 'dominio'])

url ( 'expresión dirección', [ 'parámetro'], [ 'el sufijo URL'], [ 'dominio'])

parámetros mano expresión Dirección


Para utilizar una forma diferente de direcciones de enrutamiento, definir la dirección
de expresiones difieren. Los parámetros pasados únicamente por el segundo
parámetro,
Supongamos que definimos las reglas de direccionamiento son los siguientes:

Ruta :: regla ( 'blog /: id', 'index / blog / leer');

Se puede utilizar la siguiente manera de generar la dirección URL:

Url :: acumulación ( 'índice / blog / leer', 'id = 5 & name =


ThinkPHP'); url :: acumulación ( 'índice / blog / leer', [
'id' => 5, 'nombre' => 'ThinkPHP ']); url (' index / blog /
leer '' id = 5 & name = ThinkPHP '); url (' index / blog /
leer '[' id '=> 5,' nombre '=>' ThinkPHP '] );

Utilice este - 120 -


documento en
viendo las nubes
construcción de
la
generac
ión de
Aquí se
URL utiliza el sistema de formas de explicar.

Use módulos / control / operación genera


Si está enviando módulo de enrutamiento Ll / controlador / acción, se puede escribir
directamente

// 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');

Utilice este - 120 -


documento en
viendo las nubes
construcción de
la
generac
ión de
URL

El método anterior generará la siguiente dirección URL:

/index.php/blog/5/name/thinkphp.html

Tenga en cuenta que el método de primera generación parámetro debe


definirse actuador enrutamiento dirección de encaminamiento de mano, si está
escrita de la siguiente manera
Usted puede ser capaz de generar la dirección URL correcta:

Url :: acumulación ( 'blog / leer', 'id = 5 & name = ThinkPHP');

Si su entorno acepta REWRITE, entonces la dirección URL generada cambia a:

/blog/5/name/thinkphp.html

Si configura:

'Url_common_param' => true

A continuación, la dirección URL generada cambia a:

/index.php/blog/5.html?name=thinkphp

Reglas de enrutamiento que no utilizan directamente los parámetros de URL variables


manera común.

Cabe señalar, generación de direcciones URL no detecta la validez de la ruta, pero


la búsqueda de la ruta de acuerdo con las reglas de enrutamiento calificados
dirección indicada generación de parámetros mano.

Generación de método que utiliza el controlador


Si el enrutamiento método controlador de direcciones se emplea, y se define la ruta
de la siguiente manera:

Utilice este - 121 -


documento en
viendo las nubes
construcción de
la
generac
de Configuración empleado de enrutamiento se define aquí registro dinámico como medios
ión//
URLeficaces
'Blog /: id' => ' @ Í n d i c e / b l o g / l e e r '

Usted puede ser utilizado para generar la siguiente manera:

Utilice este - 122 -


documento en
viendo las nubes
construcción de
la
generac
ión de
URL

// 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

El método utilizado para generar la clase


Si su dirección es un método de enrutamiento para el enrutamiento de clase II y
hacer las reglas de enrutamiento se definen como sigue:

// Configuración empleado de enrutamiento se define aquí registro dinámico como medios


eficaces
Ruta :: regla ([ 'blog', 'blog /: id'], '\ app \ index \ Controlador \ @ blog de
leer');
Si la dirección es un nombre de clase Ll método de enrutamiento que identificar una
definición de ruta, mediante la identificación y rápidamente generar la URL
Sitio. Usted puede ser utilizado

para generar la siguiente

manera:

// generaríndicemódulo
Blogcontroladoresleerhablarhacer URLdirección de
acceso Url :: acumulación (El Blog de id = 5? ');
url (el blog de id = 5? ');

A continuación, los cambios de dirección URL generadas automáticamente a:

/index.php/blog/5.html

dirección directamente enrutamiento


También podemos usar la dirección de enrutamiento directo para generar una URL,
por ejemplo:

Definimos las reglas de direccionamiento son los siguientes:

Utilice este - 123 -


documento en
viendo las nubes
construcción de
la
generac
ión'Blog
de /: id' = > ' Í n di c e / b l o g / l e e r '
URL

Usted puede utilizar el siguiente uso directo de enrutamiento reglas para generar la
dirección URL:

Url :: acumulación ( '/ blog / 5');

Utilice este - 124 -


documento en
viendo las nubes
construcción de
la
generac
ión de
URL

A continuación, los cambios de dirección URL generadas automáticamente a:

/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:

'Url_html_suffix' => ' S h t m l '

A continuación, los cambios de dirección URL generadas automáticamente a:

/index.php/blog/5.shtml

Si fijamos el apoyo sufijo múltiples URL

'Url_html_suffix' => ' H t m l I s h t m l '

Se llevará el primer sufijo para generar la dirección URL o dirección URL generada
automáticamente:

/index.php/blog/5.html

Si desea especificar una generación de sufijo de URL, puede utilizar:

Url :: acumulación ( 'índice / blog / leer',


'id = 5', 'shtml'); url ( 'index / blog /
leer', 'id = 5', 'shtml');

la generación de nombres de dominio


Si está utilizando una implementación multi-dominio con un nombre de dominio o
quiere generar una dirección URL que se genera por la URL por defecto sin el nombre
de dominio
Dirección, entonces usted necesita para pasar en el cuarto parámetro, que se utiliza
de dos formas:

Utilice este - 125 -


documento en
viendo las nubes
construcción de
la
generac
Generación automática de nombre de dominio
ión de
URL
Url :: acumulación ( 'índice / blog / leer', 'id =
5', 'shtml', true); url ( 'index / blog / leer', 'id
= 5', 'shtml', true);

Utilice este - 126 -


documento en
viendo las nubes
construcción de
la
generac
ión de
URL

El cuarto argumento de cierto url_domain_deploy, entonces, que el nombre de


dominio se genera de forma automática, si también abierto
reconoce automáticamente el nombre de dominio

coincide con las reglas actuales de URL. Por ejemplo, se

registró el dominio de enrutamiento información es la

siguiente:

Ruta :: dominio ( 'blog', 'Índice / blog');

A continuación, la dirección URL anterior se genera como:

http://blog.thinkphp.cn/read/id/5.shtml

El nombre de dominio especificado


También puede tratar de forma explícita la necesidad de generar nombre de dominio
de entrada, por ejemplo:

Url :: acumulación ( 'índice / blog / leer', 'id = 5',


'shtml', 'Blog'); url ( 'index / blog / leer', 'id =
5', 'shtml', 'el blog ');

O pasar el nombre de dominio completo

Url :: acumulación ( 'índice / blog / leer', 'id = 5', 'shtml',


'blog.thinkphp.cn'); Url ( 'index / blog / leer', 'id = 5',
'shtml', 'blog.thinkphp.cn');

Generada dirección URL:

http://blog.thinkphp.cn/read/id/5.shtml

En el primer parámetro se puede pasar directamente dentro del nombre de dominio,


por ejemplo:

Utilice este - 127 -


documento en
viendo las nubes
construcción de
la
generac
iónUrl
de :: acumulación ( 'índice / blog / leer el
URLblog @', 'id = 5'); url ( 'index / blog / leer el
blog @', 'id = 5'); url
('index/blog/read@blog.thinkphp.cn '' id = 5 ');

generación de anclaje
Apoyar la generación del anclaje de la dirección URL se puede utilizar directamente
en el parámetro URL:

Url :: acumulación ( 'índice / blog / leer # ancla


@ Blog', 'id = 5'); url ( 'index / blog / leer #
ancla @ Blog', 'id = 5');

Utilice este - 128 -


documento en
viendo las nubes
construcción de
la
generac
ión de
URL

dominio de anclaje de la utilización de las manos cuando la nota de anclaje delante


del nombre de dominio más adelante.

Generada dirección URL:

http://blog.thinkphp.cn/read/id/5.html#anchor

Ocultar o añadir el archivo de entrada


A veces generamos la URL puede ser necesario añadir index.php o correr hacia
index.php, la mayoría de las veces
El sistema determinará automáticamente, si nos encontramos con una dirección
generada automáticamente un problema, puede llamar directamente antes de llamar
al método de aumento
método de la raíz, por ejemplo, además de index.php:

:: url raíz ( 'index.php /'); url ::


acumulación ( 'índice / blog / leer',
'id = 5');

U ocultar index.php:

:: url raíz ( '/'); url :: acumulación (


'índice / blog / leer', 'id = 5');

método de la raíz sólo llame veces.

Utilice este - 129 -


documento en
viendo las nubes
construcción de
contr
olado
r

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

Utilice este - 130 -


documento en
viendo las nubes
construcción de
define
Controlad
or

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 ( )

return ' Í n d i c e ' ;


}
}

La ubicación real del archivo de clase del controlador es

aplicación \ index \ controlador \ Index.php

La clase del controlador puede no necesitar a heredar ninguna clase, el espacio de


nombres por defecto es el espacio de nombres raíz de aplicación.

controlador de espacio de nombres raíz se puede ajustar, por ejemplo, modificamos


el archivo de configuración de la aplicación:

// Modificar el espacio de nombres de biblioteca de aplicaciones


'App_namespace' = > ' A p l i c a c i ó n ' ,

Utilice este - 127 -


documento en
viendo las nubes
construcción de
define
Controlad
or V5.0.8+ versión, app_namespace Los parámetros de configuración cambian
APP_NAMESPACE Las constantes se definen en la entrada del archivo.
La clase controlador real debe ser cambiado se define como sigue:

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

Utilice este - 128 -


documento en
viendo las nubes
construcción de
define
Controlad
or

Public f u n c i o n i n d e x ( )

return ' Í n d i c e ' ;


}

> Sólo cambia el espacio de nombres, pero la ubicación real del

archivo y el nombre no ha cambiado. Usando esta definición de la

namespace app \ de
clase controlador index \ controlador;
modo, si usted quiere hacer una plantilla en

utilizar pensar \ Vista;


el controlador dentro, se puede utilizar

Í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 ' ) ;
}

O usar directamentevistafunción de ayuda presta la salida de la plantilla, por ejemplo:

namespace app \ index \ controlador;

Índice de clases

Public f u n c i o n i n d e x ( )

return V e r ( ' i n d e x ') ;


}

Utilice este - 129 -


documento en
viendo las nubes
construcción de
define
Controlad
or

Si heredada, Think \ Controlador,Tipo de cosas se puede llamar directamente, Think \


Ver,y, Piense \ Solicitud,El método de la clase, por ejemplo:

namespace app \ index \ controlador;

nosotrose pensar \ Controller;

Índice de clase extiende Controlador

Public f u n c i o n i n d e x ( )

// Para un nombre de dominio completo contieneURLdirección


$ This-> asignar ( 'dominio', $ this-> request-> url
(verdadero)); RETURn $ T h i s - > f e t c h ( ' 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.

Los siguientes son válidos Salida:

namespace app \ index \ controlador;

Índice de clases

Public f u n c i o n h e l l o ( )

return ' H o l a , m u n d 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 ( )

Utilice este - 129 -


documento en
viendo las nubes
construcción de
define
Controlad
or

return V e r ( ) ;
}

> El controlador generalmente no requiere ninguna salida, directareturnPuede ser.

## La conversión de salida predeterminado, la salida del controlador no hace ningún


procesamiento de datos de retorno, pero el formato de salida se puede proporcionar, y el
proceso de conversión automática de datos, siempre que los datos de salida del controlador
debe estar, Volver,Devolver el camino.

Si el controlador se define como:

namespace app \ index \ controlador;

Índice de clases

Public f u n c i o n h e l l o ( )

return ' H o l a , m u n d o !' ;


}

Public f u n c i o n d a t o s ( )

return [ ' N o m b r e ' = > ' T h i n k P H P ' , ' s t a t u s ' = > 1 ] ;


}

Cuando nos fijamos el formato de datos de salidaJSON:

// tipo de salida predeterminado


'Por defecto rTipo eturn ' => 'JSON',

Se visita

http: //localhost/index.php/index/Index/hello

Utilice este - 130 -


documento en
viendo las nubes
construcción de
define
Controlad
or

http: //localhost/index.php/index/Index/data

La salida de
resultados se
convierte en:
"Hola, mundo!"
"Nombre":" ThinkPHP "" status ": 1

Por defecto, el controladorajaxDevolverá el tipo de petición se

convierte automáticamente, por defectoJSON Si definimos el

namespace
controladorapp \ index \ controlador;

Índice de clases

Public f u n c i o n d a t o s ( )

return [ ' N o m b r e ' = > ' T h i n k P H P ' , ' s t a t u s ' = > 1 ] ;


}

Se visita

http: //localhost/index.php/index/Index/data

La salida de
resultados se
convierte en:
"Nombre":" ThinkPHP "" status ": 1

Cuando nos fijamos el formato de datos de salidahtml:

// tipo de salida predeterminado


'Retorno Ajax por defecto' => 'Html',
Utilice este - 131 -
documento en
viendo las nubes
construcción de
define
Controlad
or

En este casoajaxNo volverá solicitudes de conversión de contenido

Utilice este - 132 -


documento en
viendo las nubes
construcción de
inicio de la
controlador
a

inicio de la controladora

Si su clase controlador hereda \ pensar \ clase del controlador, se puede definir


el método de controlador de inicialización
_initialize, primero se lleva a cabo antes de
llamar al método del controlador. Por ejemplo:

namespace a p l i c a c i ón \ i n d e x \

controlador; 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 _ i n i ti a l i z e ( )

echo ' I n i t < b r / > ' ;


}

Public f u n c i o n h e l l o ( )

return ' H o l a ' ;


}

Public f u n c i o n d a t o s ( )

return ' D a t o s ' ;


}
}
Si el acceso
http: //localhost/index.php/index/Index/hello es la

salida

init
¡Hola

Si el acceso
http: //localhost/index.php/index/Index/data es la

salida

Utilice este - 133 -


documento en
viendo las nubes
construcción de
inicio de la
controlador
a

init
dato
s

Utilice este - 134 -


documento en
viendo las nubes
construcción de
Antes
de la
Operaci
ón

Antes de la Operación

Puede establecer la propiedad beforeActionList se puede especificar como un


método de operación o determinadas operaciones realizadas por un método
previamente especificado se puede decir de su método de pre-operación, claves
pre-array deben llamar al nombre del método llamado, ningún valor si la corriente
Todos los métodos antes método en el controlador.

[ 'Excepto' = > 'nombre del método,nombre del método']

Se indica que estos métodos no utilizan el pre-método,

[ 'Sólo' = > 'nombre del método,nombre del método']

Significa que sólo el uso de estos métodos antes de método.

Ejemplos son los siguientes:

Utilice este - 135 -


documento en
viendo las nubes
construcción de
Antes
de la
namespace a p p \ i n d ex \
Operaci
ón 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

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 ( )

echo ' T r e s < b r / > ' ;


}

Public f u n c i o n h e l l o ( )

Utilice este - 136 -


documento en
viendo las nubes
construcción de
Antes
de la
Operaci
ón

return ' H o l a ' ;


}

Public f u n c i o n d a t o s
()

return ' D a t o s ' ;


} }

acceso

http: //localhost/index.php/index/Index/hello

El resultado final es la salida

prime
ro
hola
tres

acceso

http: //localhost/index.php/index/Index/data

La salida es:

primer
o
segund
os
datos
de
tres

Utilice este - 137 -


documento en
viendo las nubes
construcción de
redirección
mano salto

redirección mano salto

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.

Muy simple de usar, por ejemplo, de la siguiente manera:

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');
} }

dirección de salto es opcional, el método por defecto de la dirección de salto éxito es


$ _SERVER [ "HTTP_REFERER"],
El método predeterminado es saltar error de dirección javascript: history.back (-

1) ;. El tiempo de espera predeterminado es de 3 segundos

método error mano éxito puede corresponder a la plantilla, la configuración


predeterminada es plantillas correspondientes son de dos métodos:

Utilice este - 138 -


documento en
viendo las nubes
construcción de
redirección
mano salto
THINK_PATH . ' T p l / d i s p a t c h _ j u m p . t p l '

Podemos cambiar la plantilla por defecto:

Utilice este - 139 -


documento en
viendo las nubes
construcción de
redirección
mano salto

//Saltar archivo de plantilla de error correspondiente por defecto


'Dispatch_error_tmpl' = > A P P _ P A T H . ' T p l / d i s p a t c h _ j u m p . t p l ' ,
//El éxito salto plantilla por defecto que corresponde
'Dispatch_success_tmpl' = > A P P _ P A T H . ' Tp l / d i s p a t c h _ j u m p . t p l ' ,

También puede utilizar el archivo de plantilla de proyecto página interna

//Saltar archivo de plantilla de error


correspondiente por defecto
'Dispatch_error_tmpl' = > ' P ú b l i c o /
error',
//El éxito salto plantilla por defecto correspondiente
'Dispatch_success_tmpl' = > ' P ú b l i c o /
é xarchivos
Los ito', de plantilla pueden utilizar etiquetas de plantilla, y se pueden utilizar las
siguientes variables de la plantilla:

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

método error determina automáticamente si la petición actual ajax Solicitud, si


están ajax Solicitud se convierte automáticamente en default_ajax_return
Ke tipo de retorno de información de configuración. el éxito en ajax No
devuelve la información solicitada, el desarrollador necesita para sí mismos.
redirigir
\ Método de redirección pensar clase \ controlador puede implementar
página de redirección.

Parámetros del método método Url :: build Uso de redireccionamiento mano


utiliza inducida (se refiere ala generación de URLPart), por ejemplo:

//redirigida anoticiasmóduloCatyoperativo
$ This-> redirect ( 'Noticias / categoría', [ ' C a t e _ i d ' = > 2 ] ) ;

El uso es por encima de la operación del módulo de la categoría de salto LlNews,


cambiará la actual dirección URL de redirección.
Utilice este - 140 -
documento en
viendo las nubes
construcción de
redirección
mano salto
ll directa o redirigir una dirección URL externa especificada, por ejemplo:

//Redirigido a la especificadaURLdirección y el uso302


$ This-> redirect ( 'http://thinkphp.cn/blog/2',302);

Utilice este - 141 -


documento en
viendo las nubes
construcción de
redirección
mano salto

SessionJ por el tiempo de redirección; J valores almacenados transferencia de datos,


por ejemplo,

$ This-> redirect ( 'Noticias / categoría', [ ' C a t e _ i d ' = > 2 ] , 3 0 2 , [ ' D a t o s '


=> 'Hola']);

Utilice la función cooperadora de redirección también puede lograr una mayor


funcionalidad, como por ejemplo la URL actual puede recordar después del salto

redirigir ( 'Noticias / categoría') -> recordar ();

Saltar Ll necesidad de recordar la última vez de usar la URL:

redirect () -> restore ();

direcciones URL redirigida Saltar a mano no es necesario utilizar métodos para


generar URL, se llamará automáticamente, tenga cuidado, de lo contrario, dará
lugar a la aparición de dos veces para generar el sufijo URL duplicado

Utilice este - 142 -


documento en
viendo las nubes
construcción de
ningu
na
opera
ción

ninguna operación

Ninguna operación se refiere al sistema cuando el método de operación no se puede


encontrar el método Ll especificado, se colocará ninguna operación Ll (_empty) para
llevar a cabo, tomar ventaja de este mecanismo, algunas URL de la página de error
optimización de la mano que podemos lograr. Por ejemplo, podemos utilizar las
siguientes funciones para implementar una función no-op de las ciudades de
conmutació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 )

//El funcionamiento de toda decisión


de la ciudad deciudadmétodo
return $ T h i s - > s h o wC i t y ( $
name);
}

//prestar atención showCitymétodo En sí es protected método


protected f u n c i o n s ho w C i t y ( $ n a m e )

//y$ NombreEl procesamiento


de la ciudad asociada return
'Ciudad actual' . N o m b r e $ ;
}
}
A continuación, podemos introducir en el navegador

http: // servidor / index / ciudad /


Beijing / http: // servidor / index /
ciudad / Shanghai / http: // servidor
/ index / ciudad / Shenzhen /

Desde City no define Beijing, Shanghai Shenzhen o método de funcionamiento, el


funcionamiento del sistema será posicionado Ll vacía
Métodos para resolver el parámetro vacío, vacío es el método actual de
funcionamiento en el interior del nombre de la URL, y por lo tanto se ven a su vez
Utilice este - 140 -
documento en
viendo las nubes
construcción de
ningu
na
pierden
opera
Ll El resultado es:
ción

Ciudad actual:
Beijing Ciudad
actual: Shanghai
Ciudad actual:
Shenzhen

Utilice este - 140 -


documento en
viendo las nubes
construcción de
ningu
na
opera
ción

V5.0.2+ Empezar, el método operativo vacía no requiere ningún parámetro, si


se desea obtener el nombre del método actual de operación, una llamada directa
para obtener la solicitud de objeto actual, también puede utilizar la inyección de
dependencias (consulte la sección de inyección dependerá de solicitud)

Utilice este - 141 -


documento en
viendo las nubes
construcción de
controla
dor
aéreo

controlador aéreo

El concepto se refiere al controlador de vacío cuando el sistema no puede encontrar


Ll especificar el nombre del controlador, el sistema intentará localizar un controlador
de vacío (error), tomamos ventaja de este mecanismo se puede utilizar para
optimizar error personalizado URL de la página de la mano. Ahora que avanzamos en
la parte delantera de la demanda, la URL original

http: // servidor / index / ciudad / Shanghai /

convertirse en

http: // servidor / index / Shanghai /

de tal manera más sencilla, si la búsqueda de acuerdo con el modelo tradicional,


tenemos que definir una clase de controlador en cada ciudad, a continuación,
método de índice se procesa en el interior de cada uno de controlador. Sin embargo,
si se utiliza la función de control del tráfico aéreo, este problema puede ser resuelto.

Podemos definir una clase al controlador de error cabeza página

Utilice este - 142 -


documento en
viendo las nubes
construcción de
controla
dor
<? Php
aéreo
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 \

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);
}

//prestar atención ciudadmétodo En sí es protected método


protected f u n c i o n c iu d a d ( $ n a m e )

//y$ NombreEl procesamiento


de la ciudad asociada return
'Ciudad
A continuación, actual' introducir
podemos . N o m b r e en
$ ; el navegador
}
}

Utilice este - 143 -


documento en
viendo las nubes
construcción de
controla
dor
aéreo

http: // servidor / index /


Beijing / http: // servidor /
index / Shanghai / http: //
servidor / index / Shenzhen /

Debido a que el sistema no existe Beijing, Shanghai o controlador de Shenzhen, por


lo tanto el posicionamiento del controlador Ll vacía
(Error) para realizar, ver los resultados de Ll secuencialmente salida es:

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.

El controlador puede ser Error vacío definido

// Cambiar el nombre
del controlador por => ' M y E r r o r ' ,
defecto en blanco
'Empty_controller'

Cuando el controlador no puede encontrar Ll, posicionamiento LlMyError clase


controlador funcionará.

Utilice este - 144 -


documento en
viendo las nubes
construcción de
controlad
ores de
varios
niveles

controladores de varios niveles

controladores de varios niveles


El nuevo controlador es compatible con cualquier nivel de la jerarquía, y soporta
enrutamiento, tales como:

namespace a p l i c a c i ón \ i n d e x \

Controlador \ uno; nosotrose pensar

\ 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:

aplicación / index / controlador / una / blog.php

dirección de acceso se puede utilizar

http: //serverName/index.php/index/one.blog/index

Si está utilizando el controlador de varios niveles en la definición de rutas, puede


utilizar:

\ Piense \ Ruta :: get ( 'blog / añada', 'index / one.Blog / add');

Utilice este - 145 -


documento en
viendo las nubes
construcción de
controlad
ores de
varios
niveles

Utilice este - 146 -


documento en
viendo las nubes
construcción de
controlad
or
Hierarchic
al

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 \

controlador; class Blog

Public f u n c i o n i n d e x ( )

return ' Í n d i c e ' ;


}

Public f u n c i o n a d d ()

return ' A ñ a d i r ' ;


}

Public f u n c i o n e d i c ió n ( $ i d )

return ' E d i t a r : ' $ id ; .


}
}

El índice principal módulo de controlador que se encuentra actualmente define más


adelante, de manera que cuando el acceso a páginas diferentes direcciones URL de
salida de la siguiente manera:

http: // servidor / index / blog / index //


exportación índice http: // servidor / index / blog /
add // exportación
añadir http: // servidor / index / blog / editar / id
/5 // exportación edit: 5

Utilice este - 147 -


documento en
viendo las nubes
construcción de
controlad
or
Hierarchic
al La nueva
versión del controlador puede no necesitar a heredar ninguna clase base,
por supuesto, se puede definir una clase de controlador de base común para ser
Inheritance, también se puede hacer por la extensión controlador diferentes
funciones (por ejemplo Restful implementado).

Si usted no pasa la ruta de acceso, el nombre del controlador en la dirección URL se


verá obligado a minúsculas, y luego se resuelve con el método joroba crear una
instancia del controlador.

Utilice este - 148 -


documento en
viendo las nubes
construcción de
controlad
or
Hierarchic
al

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

Blog controlador de evento como sigue:

namespace a p l i c a c i ón \

index \ evento; class Blog

Public f u n c i o n i n s e rt a r ( )

return ' I n s e r t a r ' ;


}

Public f u n c i o n a c t u al i z a c i ó n ( $ i d )

return ' A c t u a l 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 )

return ' E l i m i n 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

A fin de facilitar la llamada, el controlador del sistema proporciona funciones


auxiliares de múltiples capas instanciados directamente, por ejemplo:

Incluso $t = c o n t r o la d o r ( ' B l o g ' ,


'Evento'); echo $ Evento->
a c t u a l i z a c i ó n ( 5 ) ; / / exportación
actualización: 5 echo $ E v e n t o - > d e l e t e
( 5 ) ; / / exportación Eliminar: 5

Utilice este - 149 -


documento en
viendo las nubes
construcción de
controlad
or
Apoyo a la cruzada módulo de llama, por ejemplo:
Hierarchic
al
Incluso $t = c o n t r o la d o r ( ' A d m i n / B l o g ' ,
'Evento'); echo $ Evento-> actualización
( 5 ) ; / / exportación actualización: 5

Utilice este - 150 -


documento en
viendo las nubes
construcción de
controlad
or
Hierarchic
al

Se muestra un ejemplo del módulo de administración Blog clase del controlador, y


lleva a cabo el método de actualización.

Además de ejemplos de controlador jerárquica, pero también puede llamar


directamente a un método de un tipo en capas de controlador, por ejemplo:

echo \ P i e n s e \ c a r ga d o r : : a c c i ó n ( ' B l o g / a c t u a l i z a c i ó n ' , [ ' I d ' = > 5 ] ,


' E v e n t o ' ) ; / / exportación CTUALIZAR: 5

También puede utilizar ayudante de acciones para lograr la misma funcionalidad:

echo a c c i ó n ( ' B l o g / a c t u a l i z a c i ó n ' , [ ' I d ' = > 5 ] , ' E v e n t o ' ) ; / / exportación


actualización: 5

Mecanismo utiliza un controlador jerárquica, podemos utilizar para lograr Widget


(verdadero control jerárquico se invoca en la plantilla
), Tales como:
Define el índice \ widget de \ Blog clase del controlador de la siguiente
manera:

namespace a p l i c a c i ón \

index \ Reproductor; class

Blog
Public f u n c i o n h e a d er ( )

return ' H e a d e r ' ;


}

Public f u n c i o n i z q u ie r d a ( )

return ' I z q u i e r d a ' ;


}

Public f u n c i o n m e n ú ( $ n a m e )

return ' M e n ú : ' $ n o mb r e ; .


}
}
Podemos llamar a la aplicación \ index \ widget de \ Blog control jerárquico
directamente en el archivo de plantilla,
Uso de acción ayudante
Utilice este - 151 -
documento en
viendo las nubes
construcción de
controlad
or
Hierarchic
al : Acción ( 'Blog / cabecera', ' ' , ' W i d g et ' ) }
: Acción ( 'Blog / menú', [ ' N o m b r e' = > 'T h i n k ' ] , ' W i d g e t ' ) }

También proporciona un marco para simplificar el controlador widget de Widget


llamada de función,

Utilice este - 152 -


documento en
viendo las nubes
construcción de
controlad
or
Hierarchic
al

Se puede utilizar directamente widget de ayudante

: Widget ( 'Blog / cabecera')}


: Widget ( 'Blog / menú', [ ' N o m b r e' = > 'T h i n k ' ] ) }

Utilice este - 153 -


documento en
viendo las nubes
construcción de
controlado
r de
descanso

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; nosotrose pensar \

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'

definición del método reparador


El método de funcionamiento del método reparador mano se define en la diferencia
principal del modo estándar es que la necesidad de tipos de recursos petición
mano Tipo
La determinación, en la mayoría de los casos, el método de funcionamiento de un
tipo de solicitud de enlace mano Ll través de definiciones de tipo de recursos de
encaminamiento. Si no se define la ruta, entonces necesitará agregar el código en el
que el método de determinación de operación, ejemplos:

Utilice este - 150 -


documento en
viendo las nubes
construcción de
controlado
r de
<? Php
descanso

namespace a p l i c a c i ón \ i n d e x \

controlador; nosotrose pensar \

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')
}

Utilice este - 150 -


documento en
viendo las nubes
construcción de
controlado
r de
descanso

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;
} }

En los métodos de funcionamiento de descanso, se puede usar $ this-> Tipo de Tipo


de la visita actual de acceso a los recursos, la
$ This-> método obtiene el tipo de solicitud actual.

reparador de salida
respuesta Rest usando el método proporcionado por la clase
$ This-> respuesta (datos $, ' J S O N ' , 2 0 0 ) ;

uso pensar \ Response categoría

Respuesta :: create (datos $, ' J S O N ' ) - > c ó d i g o ( 2 0 0 ) ;

uso del ayudante


JSON (datos $, 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:

// exportación json formato de datos


JSON (datos $, 2 0 0 ) ;
// exportación JSONp formato de datos
jsonp (datos $, 2 0 0 ) ;
// exportación XMl formato de datos
XML (datos $, 2 0 0 ) ;

Además de definir ordinaria método reparador de funcionamiento, el sistema


también es compatible con tipos adicionales de invocación automática, se basa en la
solicitud actual

Utilice este - 151 -


documento en
viendo las nubes
construcción de
controlado
r de
Buscando
descanso
Tipo tipo de recurso mano llamar automáticamente
sus métodos de operación. llamada automática las reglas del
sistema son: l l l Descripción definir especificaciones
l --- l --- l
l presentar operación sufijo de nombre l estándar de tipo de recurso método
reparador definición, por ejemplo, leer obtener pdf l

Utilice este - 152 -


documento en
viendo las nubes
construcción de
controlado
r de
descanso

Cuando l l operación de los recursos comprometidos nombre de sufijo Actualmente


restDefaultMethod el mismo tipo de la mano, como por ejemplo VER PDF l
El mismo tipo l l funcionamiento de los autores del sufijo recurso de tiempo mano
restDefaultType actual, por ejemplo, leer entrada l

El método de descanso definido de esta manera utilizando el mecanismo de


operación nula, por lo que para utilizar este enfoque no se puede utilizar en la premisa
de que la corriente El método como se define, si el método Ll reparador de detección
asociada del método ya no está detrás de los criterios de inspección, por ejemplo,
definimos InfoController de la siguiente manera:

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

Si volvemos a visitar la URL es:

http: //serverName/index/info/read/id/1.xml

Supongamos que no definimos rutas para que el acceso se lee módulo de


Información de operación, entonces la solicitud anterior llama la clase Información
La lectura método get XML, en lugar de leer método xml, pero si la URL de acceso es:

Utilice este - 153 -


documento en
viendo las nubes
construcción de
controlado
r de
http: //serverName/index/info/read/id/1.json
descanso

Así método JSON leer se llama.

Utilice este - 154 -


documento en
viendo las nubes
construcción de
controlado
r de
descanso

Utilice este - 155 -


documento en
viendo las nubes
construcción de
controlador
de
posicionamien
to automático

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 ,

El controlador se define entonces como sigue:

namespace a p l i c a c i ón \ i n d e x \

Controlador \ uno; nosotrose pensar

\ 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 ( ' e d i c i ó n : ' $ I d . ) ;


}
}
Podemos acceder directamente a la siguiente dirección URL:

http: //serverName/index.php/index/one/Blog

Utilice este - 156 -


documento en
viendo las nubes
construcción de
controlad
or de
recursos

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

O utilizar el espacio de nombres generación completa

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:

Ruta :: recursos ( 'blog', 'index / Blog');

7 se registra automáticamente después de establecer reglas de enrutamiento, como


sigue:

tipo de reglas de Un método


solicitud
GET enrutamiento
Blog de operación
índice
Generación
blog / crear correspondien
GET crear
te
POSTAL Blog guardar
GET blog /: id leer
GET blog /: id / editar
editar
PUT blog /: id actualización
BORRAR blog /: id borrar

Utilice este - 157 -


documento en
viendo las nubes
construcción de
soli
citu
d

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

Utilice este - 158 -


documento en
viendo las nubes
construcción de
solicitud
de
informa
ción

solicitud de información

Si desea obtener la información actual solicitud se puede usar \


pensar \ clase de solicitud, además de la siguiente

$ Request = S o l i c i t ud : : e j e m p l o ( ) ;

También puede utilizar ayudante

$ Request = s o l i c i t ud ( ) ;

Por supuesto, la forma más conveniente para inyectar o utilizar el objeto de


solicitud para obtener las variables.

Por ejemplo:

información de adquisición URL


$ Request = S o l i c i t ud : : e j e m p l o ( ) ;
// Obtener el nombre de dominio actual
echo ' d o m i n i o : ' . $ R e q u e s t - > d o m i n i o ( ) .
'<br/>';
// Obtener los archivos actuales de la población
echo ' a r c h i v o : ' . $ R e q u e s t - > b a s e F i l e ( ) .
'<br/>';
// Obtener el actualURLdirección Excluyendo el nombre de
dominio '<br/>';
echo ' U R L : ' . $ R e qu e s t - > u r l ( ) . ' < b r / > ' ;
// Para un nombre de dominio completo . '<br/>';
contieneURLdirección
echo ' U r l i n g e n i o h do m i n i o : ' . $ R e q u e st - > u r l
(verdadero) .
// Obtener el actualURLdirección gratisQUERY_STRING . '<br/>';
echo ' U r l w i t h o u t p re g u n t a : ' . $ R e q u e st - >
b a s e U 'r Pl a t( h) i n f o : ' . $ R e q u e s t - > p a t h i n f o ( ) .
echo
'
//< b obtenerURLaccesodeRAÍZdirección
r/>';
//
echo obtenerURLdirecciónPATH_INFOinformación
' R a í z : ' . $ R e qu e s t - > r a í z ( ) . ' <sin b r /sufijo
>';
echo 'Pathinfo: ' . $ Request-> ruta () . '<br/>';
// obtenerURLaccesodeRAÍZdirección
//
echo obtenerURLinformación
' R o o t i n g e n i o h d o mde i nlai odirección
: ' . $sufijo
R e q u es t - >
echo
r o o t E( xv te : rd' a d.e r $o ) R e q ue s t - > e x t ( ) . ' < b r / > ' ;
// obtenerURLdirecciónPATH_INFOinformación
La salida es:

Utilice este - 159 -


documento en
viendo las nubes
construcción de
solicitud
de
dominio: http://tp5.com
informa
ción

Utilice este - 160 -


documento en
viendo las nubes
construcción de
solicitud
de
informa
ción

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 ( ) ;

Si la dirección de acceso actual es http: //serverName/index.php/index/hello mundo / index


La salida es:

El nombre del módulo actual


esíndice El nombre del
regulador de intensidad
esHelloWorld Es el nombre
de la operación actualíndice
Valor deseado nombre de módulo de ajuste pasado al nombre de módulo con el
método, el mismo controlador usado para establecer el nombre del nombre de la
mano que funcionan
llamada

Solicitud :: ejemplo () -> Módulo ( 'module_name');

Obtener parámetros de la petición


$ Request = S o l i c i t ud : :
e j e m p l'método
eco o ( ) ; de la $ Request-> método () . ' < b r / > ' ;
echo petición:' . $ Request-> Tipo () . '< b r / > ' ;
echo 'Tipo de . $ Request-> ip () .
echo recurso:' .
'siAJaxsolicitud:'' <.b rv/a>r_
' ;e x p o r t ( $ r e q u e s t - > i s A j a x ( ) , v e r d a d e r o ) .
echo ' <br/>';
'accesoipdirec
ción:'
dump ($'parámetros de la petición:';
request-> parámetro ());
echo 'Parámetros de la petición: incluye
solamentenombre '; dump ($
request-> solamente ([' nombre
'])); echo 'parámetros de la petición:
Solución de problemasnombre '; dump
($ request-> excepto ([' nombre
']));
Utilice este - 161 -
documento en
viendo las nubes
construcción de
solicitud
de
La salida es:
informa
ción

Utilice este - 162 -


documento en
viendo las nubes
construcción de
solicitud
de
informa
ció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 ());

Enrutamiento se define como:

return [
'Hola /: nombre' = > [ ' Í n d i c e / h o l a ' , [ ] , [ ' n o m b r e ' = > ' \ w + ' ] ] ,
];

Visite la siguiente dirección URL:

http: // servidor / hola / ThinkPHP

La salida es:

Utilice este - 163 -


documento en
viendo las nubes
construcción de
solicitud
de
información de enrutamiento:
informa
array ( T a m a ñ o = 4 )
ción
'Regla' = > s t r i n g ' Ho l a / : n o m b r e '
(Longitud = 11) 'ruta' => string 'Índice /
hola' (Longitud = 11) 'patrón' =>
array ( T a m a ñ o = 1 )
'Nombre' = > s t r i n g '\ W + ' ( L o n g i t u d = 3 )

Utilice este - 164 -


documento en
viendo las nubes
construcción de
solicitud
de
informa
ción

'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)

Configuración de información de solicitud


Si en determinadas circunstancias la adquisición de información de petición es
incorrecto, la información de parámetros se puede proporcionar manualmente,
utilizando el método siguiente:

$ 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');

Utilice este - 160 -


documento en
viendo las nubes
construcción de
Las
variable
s de
entrada

Las variables de entrada

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.

Determinar si una variable está definida


El método puede ser utilizado para detectar tiene son establecer parámetros
variables como sigue:

Solicitud :: ejemplo () -> tiene ( 'id',


'conseguir'); Solicitud :: ejemplo () -> tiene
( 'nombre', 'post');

O utilizar una función de ayuda

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:

El método de tipo variable ( 'variable nombre / modificadores de variables', 'Valor por


defecto', 'filtración')
Tipo de paquete variable insertar Método:

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

Utilice este - 161 -


documento en
viendo las nubes
construcción de
Las
variable
borrar Variable conseguir BORRAR
s de
sesión
entrada Obtiene variable $ SESIÓN
galleta Obtiene variable $ COOKIE
solicitud Obtiene variable $ SOLICITUD

Utilice este - 162 -


documento en
viendo las nubes
construcción de
Las
variable
s de
entrada

servidor Obtiene variable $ Server


env Obtiene variable $ ENV
ruta La obtención de encaminamiento
expedien (prospecto pathinfo)
Obtiene variable Variable
$ ARCHIVOS
te
obtener PARAM variable
Se proporciona PARAM marco variable para la identificación automática de tipos
de variables GET, POST o PUT solicitud el modo de adquisición, se utiliza el
método de adquisición de parámetros de solicitud sistema recomendado de la
siguiente manera:

// Obtener la petición actualnombrevariable


Solicitud :: ejemplo () -> parámetro ( 'nombre');
// Todas las variables en la solicitud de adquisición de corriente (filtrado)
Solicitud :: ejemplo () -> PARAM ();
// Obtener la solicitud actual todas las variables (datos sin procesar)
Solicitud :: ejemplo () -> PARAM (false);
// Obtener la solicitud actual de todas las variables (incluyendo carga de archivos)
Solicitud :: ejemplo () -> PARAM (true);

Método parámetro guarda el parámetro de petición tipo de corriente y la petición


GET combinada variable PATH INFO mano.

Utilizar funciones de ayuda para lograr:

input ( 'param.name');
input ( 'PARAM.');
o de entrada (
'nombre'); input
( '');

Debido a que el defecto función de entrada en el uso de la variable PARAM toma de


venta manera.

obtener GET variable


Solicitud :: ejemplo () -> get ( 'id'); / / Obtener unaobtenervariable
Solicitud :: ejemplo () -> get ( 'nombre'); // obtenerobtenervariable
Solicitud :: ejemplo () -> get (); / / Obtener toda laobtenerVariable
(array filtrada) Solicitud :: ejemplo () -> get (falso); / / Obtener toda
laobtenerVariable (matriz original)

Utilice este - 163 -


documento en
viendo las nubes
construcción de
Las
variable
O para lograr la misma funcionalidad utilizando el método de entrada función auxiliar
s de
incorporada:
entrada

input ( 'get.id');
input ( 'get.name');
input (
'conseguir.');

Utilice este - 164 -


documento en
viendo las nubes
construcción de
Las
variable
s de
entrada

Nota: pathinfo parámetro de dirección no puede conseguir método para llegar a


ver la variable PARAM M get "

obtener POST variable


Solicitud :: ejemplo () -> post ( 'nombre'); // Obtener
unapuestovariable Solicitud :: ejemplo () -> post (); / / Consigue
todo filtradapuestovariable Solicitud :: ejemplo () -> post
(falso); / / Obtener todospuestovariables originales

Utilizar funciones de ayuda para lograr:

input ( 'post.name');
de entrada (
'post.');

obtener PUT variable


Solicitud :: ejemplo () -> put ( 'nombre'); // Obtener
unaponervariable Solicitud :: ejemplo () -> put (); / / Obtener
todosponerVariable (filtrada) Solicitud :: ejemplo () -> put
(falso); / / Obtener todosponervariables originales

Utilizar funciones de ayuda para lograr:

input ( 'put.name');
input ( 'puso.');

obtener requesT variable


Solicitud :: ejemplo () -> petición ( 'id'); // Obtener unarequestvariable
Solicitud :: ejemplo () -> petición (); / / Obtener todosrequestVariable
(filtrada) Solicitud :: ejemplo () -> Solicitud de (falsa); / / Obtener
todosrequestdatos variables originales

Utilizar funciones de ayuda para lograr:

input ( 'request.id');
input ( 'solicitud.');

Utilice este - 165 -


documento en
viendo las nubes
construcción de
Las
obtener
variable SERVIRR variable
s de
entrada
Solicitud :: ejemplo () -> servidor ( 'PHP_SELF'); / / Obtener unaservidorvariable
Solicitud :: ejemplo () -> servidor (); / / Obtener todosservirrvariable

Utilice este - 166 -


documento en
viendo las nubes
construcción de
Las
variable
s de
entrada

Utilizar funciones de ayuda para lograr:

input ( 'server.PHP_SELF');
input ( 'servidor.');

obtener SESSION variable


Solicitud :: ejemplo () -> Sesión ( 'user_id'); / / Obtener unaSessionvariable
Solicitud :: ejemplo () -> Sesión (); / / Obtener todosSessionvariable

Utilizar funciones de ayuda para lograr:

de entrada (
'session.user_id'); input (
'sesión.');

obtener cookie variable


Solicitud :: ejemplo () -> cookie ( 'user_id'); / / Obtener unacookievariable
Solicitud :: ejemplo () -> cookie (); / / Obtener todoscookievariable

Utilizar funciones de ayuda para lograr:

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 ' ,

Solicitud de objetos también es compatible con las variables globales adquiridos


filtración, prospecto función de filtración, filtración y
Tipos de PHP integrado filtros, se puede establecer un métodos de filtrado de
variables globales, tales como:

Solicitud :: ejemplo () -> filtro ( 'htmlspecialchars');

Utilice este - 167 -


documento en
viendo las nubes
construcción de
Las
variable
Es compatible con una pluralidad de métodos de filtrado, por ejemplo:
s de
entrada

Utilice este - 168 -


documento en
viendo las nubes
construcción de
Las
variable
s de
entrada

Solicitud :: ejemplo () -> filtro ([ 'strip_tags', 'htmlspecialchars']),

método de filtrado se puede añadir en el momento de adquisición de la variable, por


ejemplo:

Solicitud :: ejemplo () -> get ( 'nombre', '', 'htmlspecialchars'); / /


obtenerobtenervariable y con
htmlspecialcharsfunción de filtro
Solicitud :: ejemplo () -> PARAM ( 'nombre de usuario', '', 'strip_tags'); / /
obtenerPARAMvariable y constrip_tagsfunción de filtro
Solicitud :: ejemplo () -> post ( 'nombre', '', 'org \ Filtro :: SafeHTML'); / /
obtenerpuestovariable y conorg \ FilterclasesafeHtmlfiltración

Puede soportar múltiples reglas de filtrado de entrada, tales como:

Solicitud :: ejemplo () -> PARAM ( 'nombre de usuario' '', 'strip_tags,


strtolower'); / / obtener
PARAMvariable Y en las llamadas a su vezstrip_tags,strtolowerfunción de filtro

Solicitud objeto también es compatible con PHP construido ID proporcionado el filtro


de filtro, por ejemplo:

Solicitud :: ejemplo () -> post ( 'e-mail', '', FILTER_VALIDATE_EMAIL);

Marco FilterID hacer la conversión de apoyo, por lo que la forma en que las cadenas
se puede utilizar, por ejemplo:

Solicitud :: ejemplo () -> post ( 'e-mail', '', 'email');

FilterID cadena de caracteres definida utilizando el tiempo, el sistema llama


automáticamente en tiempo filter_id
Filtrar constante.

filter_list cadena específica definida según el valor de retorno de la función.

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

Dice que si no ha sido estandarizada dirección de correo electrónico, a continuación,


devuelve una cadena vacía.

Utilice este - 170 -


documento en
viendo las nubes
construcción de
Las
variable
s de
entrada

Si la corriente no requiere ningún tipo de filtro, puede utilizar (v5.0.3 + versión)

// obtenerobtenervariable Incluso sin ningún tipo de filtrado y filtrado proporcionado mundial


Solicitud :: ejemplo () -> get ( 'nombre', '', null);

Obtener algunas de las variables


Si sólo tiene que conseguir algunos parámetros de la petición actual, puede utilizar:

// Obtiene solamente la petición actualidentificaciónynombrevariable


Solicitud :: ejemplo () -> solamente ( 'id, nombre');

O utilizar una gran variedad de formas

// Obtiene solamente la petición actualidentificaciónynombrevariable


Solicitud :: ejemplo () -> solamente ([ 'id', 'nombre']);

El parámetro predeterminado adquirida es la petición actual, si la necesidad de


obtener cierto parámetro de tipo E, el segundo parámetro se puede utilizar, por
ejemplo:

// Obtiene solamenteGETpedidoidentificaciónynombrevariable
Solicitud :: ejemplo () -> solamente ([ 'id', 'nombre'], 'conseguir');
// Obtiene solamentePOSTALsolicituddeidentificaciónynombrevariable
Solicitud :: ejemplo () -> solamente ([ 'id', 'nombre'], 'post');

Excluir algunas variables


También es compatible con la exclusión de ciertas variables de conseguir, por
ejemplo,

// excluiridentificaciónynombrevariable
Solicitud :: ejemplo () -> excepto ( 'id, nombre');

O utilizar una gran variedad de formas

// excluiridentificaciónynombrevariable
Solicitud :: ejemplo () -> excepto ([ 'id', 'nombre']);

También es compatible con la adquisición especifica el tipo de variable:


Utilice este - 171 -
documento en
viendo las nubes
construcción de
Las
variable
s de
// excluirGETpedidoidentificaciónynombrevariable
entrada
Solicitud :: ejemplo () -> excepto ([ 'id', 'nombre'], 'conseguir');
// excluirPOSTALsolicituddeidentificaciónynombrevariable

Utilice este - 172 -


documento en
viendo las nubes
construcción de
Las
variable
s de
entrada

Solicitud :: ejemplo () -> excepto ([ 'id', 'nombre'], 'post');

modificadores de variables
función del modificador de función de entrada soporta el uso de variables, puede
mejorar las variables de filtrado.

El uso es como sigue:

input ( 'Tipo Variable Variable Nombre / modificador');

Solicitud :: ejemplo () -> tipo de variable ( 'nombre de la variable /


modificador');
Por ejemplo:

de entrada ( 'get.id/d'); input (


'post.name/s'); input ( 'post.ids /
a'); Solicitud :: ejemplo () -> get (
'id / d');

ThinkPHP5.0 versión por defecto es modificador / s variables, si la necesidad de


pasar las variables de cadena distintos de lo siguiente puede ser utilizado
Modificadores, prospecto:

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.

Utilice este - 173 -


documento en
viendo las nubes
construcción de
Cambiar
la
variable

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:

// solicitud de cambio de variable


Solicitud :: ejemplo () -> PARAM ([ 'id' => 10]);

Utilice este - 174 -


documento en
viendo las nubes
construcción de
tipo de
solicitud

tipo de solicitud

Adquisición tipo de solicitud


En muchos casos por debajo, es necesario determinar el tipo de solicitud de la
operación actual es GET, POST, PUT, DELETE
O la cabeza, aspectos puede hacer una solicitud para un tipo diferente de
procesamiento lógico, aspectos adicionales necesitan para verificar la seguridad
de la siguiente algunos casos, las solicitudes de filtro inseguro.

ThinkPHP5.0 constantes del sistema de cancelación (por ejemplo, es conseguir, es


POST, etc.) para determinar el tipo de solicitud, los usos del sistema
pensar \ manejo de tipo de petición de
solicitud. El uso es como sigue

// 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

Utilice este - 175 -


documento en
viendo las nubes
construcción de
tipo de
solicitud
// si GET solicitud
yoF ( R e q u e s t ( ) - > is G e t ( ) ) e c h o "Actualmente GET solicitud";

Utilice este - 176 -


documento en
viendo las nubes
construcción de
tipo de
solicitud

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.

Utilice este - 170 -


documento en
viendo las nubes
construcción de
solicitud
de
camuflaj
e

solicitud de camuflaje

Tipo de solicitud enmascaramiento


Apoyar la petición de tipo camuflaje, pueden presentar las variables _method en
un formulario de envío en el interior, las solicitudes entrantes necesitan para
disfrazar la clase
Tipo, por ejemplo:

<Param m e t h o d = " p o st " a c t i o n = " " >


<Input t y p e = "text" name = "nombre" value = "Hola">
<Input t y p e = " o c u l ta " n a m e = " _ m é t o d o " v a l u e = " P U T " >
<Input t y p e = " s u b m it " v a l o r = "presentar">
</ Form>

Después de enviar la solicitud se identifica como un tipo de la solicitud PUT.

Se puede establecer cualquier tipo de solicitud válida, el prospecto GET, POST,

PUT DELETE mano y así sucesivamente. Si es necesario cambiar los nombres de

las variables petición disfrazada, puede modificar el archivo de configuración de

la aplicación:

// solicitud camuflaje
forma tipo de variable => ' _ m ' ,
'Var_method'

AJAX / PJAX camuflaje


petición Ajax puede ser una solicitud para el camuflaje, de la siguiente manera:

http: // localhost / index _ajax = 1?

Solicitud o PJAx camuflado

http: // localhost / index _pjax = 1?

Si es necesario cambiar los nombres de las variables petición disfrazada, puede


Utilice este - 171 -
documento en
viendo las nubes
construcción de
solicitud
de
modificar el archivo de configuración de la aplicación:
camuflaj
e
//
formasajaxvariable => ' _ a ' ,
de camuflaje
'Var_ajax'
// => ' _ p ' ,
formaspjaxvariable
de camuflaje
'Var_pjax'

Utilice este - 172 -


documento en
viendo las nubes
construcción de
solicitud
de
camuflaj
e

_ajax _pjax mano puede disimular variable de petición por GET / POST /
PUT similares.

Utilice este - 173 -


documento en
viendo las nubes
construcción de
la
informació
n de
cabecera
HTTP

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:

$ Agent = S o l i c i t u d : : e j e m p l o ( ) - > c a b e c e r a ( ' u s e r - a g e n t ' ) ;

HTTP nombre de encabezado de solicitud es sensible a mayúsculas, y se convierte


automáticamente a _ -, por lo que los siguientes son indicación equivalente
de:

$ Agent = S o l i c i t u d : : e j e m p l o ( ) - > c a b e c e r a ( ' u s e r - a g e n t ' ) ;


$ Agent = S o l i c i t u d : : e j e m p l o ( ) - > h e a d e r ( ' U s e r - A g e n t ' ) ;
$ Agent = S o l i c i t u d : : e j e m p l o ( ) - > h e a d e r ( ' U S E R _ A G E N T ' ) ;

Utilice este - 174 -


documento en
viendo las nubes
construcción de
Pseud
o-
estátic
a

Pseudo-estática

Pseudo-estática URL es por lo general para satisfacer unas mejores resultados de


SEO, soporte configuración de URL seudo-estática ThinkPHP, se puede establecer
parámetro url_html_suffix azar al final de la URL que desea aumentar el sufijo
estático, mientras que la ejecución normal no afecta la operación actual. Por
ejemplo, establecemos

'Url_html_suffix' = > ' S h t m l '

Entonces podemos poner lo siguiente URL http: // servidor /convertirse Home / en


Blog / leer / id / 1
http: //serverName/Home/Blog/read/id/1.shtml
Esta última característica es más URL de la página estática, pero el mismo efecto se
realiza delante de la URL lado, y no el impacto inicial Los parámetros a utilizar.

Por defecto, juego pseudo-estática a html, si fijamos el sufijo pseudo-estática es una


cadena vacía,

'Url_html_suffix' => ''

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

Se puede acceder normalmente.

Podemos obtener acceso al sufijo actual pseudo-estática en el método de


funcionamiento del controlador, por ejemplo:

Utilice este - 175 -


documento en
viendo las nubes
construcción de
Pseud
o-
$ Ext = S o l i c i t u d : : e j e m p l o ( ) - > e x t ( ) ;
estátic
a

Si quieres apoyar múltiples sufijo pseudo-estática se puede establecer directamente


la siguiente manera:

// Una pluralidad de Sufijo pseudo-estático usoyosegmentación

Utilice este - 176 -


documento en
viendo las nubes
construcción de
Pseud
o-
estátic
a

'Url_html_suffix' = > ' H t m l I s h t m l I x m l '

Entonces, http: //serverName/Home/blog/3.pdf Se informó que un error del


cuando el sistema.
acceso

Si desea desactivar el acceso pseudo-estática, se puede establecer

// Cerrar el acceso sufijo pseudo-estática


'Url_html_suffix' = > f a l s o ,

Después de cerrar el acceso a la pseudo-estática, el acceso URL ya no se admite


manera pseudo-estática, y el sufijo pseudo-estática que se resolverá como el último
El valor de un parámetro, por ejemplo:

http: //serverName/index/blog/read/id/3.html

El valor final del parámetro id se convertirá en 3.html.

Utilice este - 177 -


documento en
viendo las nubes
construcción de
método
de
inyecció
n

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:

// porganchométodo de inyección método dinámico


Solicitud :: gancho ( 'usuario', 'getUserInfo');

función getUserInfo se define como sigue

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 )

// según$ USERIdLa obtención de información de los usuarios


return $ I n f o r m a c i ón;
}

A continuación, podemos utilizar directamente en el controlador:

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 $ ) ;
}

Utilice este - 178 -


documento en
viendo las nubes
construcción de
inyecció
n
propied
ades

inyecció
n
propied
actual La inyección puede ser dinámicamente propiedades de la solicitud de
adesmétodos:
objeto,

// propiedades de enlace dinámico


Solicitud :: ejemplo () -> bind ( 'usuario', new U s u a r i o ) ;
// o el uso
Solicitud :: ejemplo () -> usor = N e b r a s k a w u s u a r i o ;

Obtiene las propiedades de unión utilizando los métodos siguientes:

Solicitud :: ejemplo () -> usuario;

Si el objeto solicitado, entonces el controlador de inyección puede también ser


utilizado directamente

$ This-> request-> usuario;

O usar las funciones de ayuda:

solicitud () -> usuario;

Utilice este - 179 -


documento en
viendo las nubes
construcción de
enlace
de
parámet
ros

enlace de parámetros

El método de unión es el parámetro de dirección URL (o dirección de


encaminamiento) del método de funcionamiento de la variable como un parámetro
pasado directamente.

parámetro de operación de enlace


Buscar por nombre de Encuadernación
Encuadernación parámetros del modo como se encuentra por defecto nombre de la
variable de unirse, por ejemplo, definimos dos a blog método de operación de
controlador
leer método de archivo de la mano, ya que la operación de lectura requiere
un parámetro id especificado, el método de archivado requiere un
determinado año (año) dos parámetros meses Mano (mes), entonces se puede
definir de la siguiente manera:

namespace a p p \ i n d ex \

Controller; class Blog

Public f u n c i o n l e e r ( $ i d )

return ' I d = ' $ i d .;


}

Public f u n c i o n A r c h iv o ( $ a ñ o = ' 2 0 1 6 ' , $ m e s = ' 0 1 ' )

return ' A ñ o = ' $ a ñ o y m e s = ' $ m e s e s . . . ;


}
}

Tenga en cuenta que este método de operación, y ninguna lógica de negocio


específico, simplemente ejemplar.

la dirección URL de acceso son:

http: //serverName/index.php/index/blog/read/id/5 http:


//serverName/index.php/index/blog/archive/year/2016/month/06

Utilice este - 180 -


documento en
viendo las nubes
construcción de
enlace
de
parámetro de la mano de dos meses parámetro de dirección URL del año
parámet
Identificación mano mano es
ros automáticamente leer y método de operación
Método de funcionamiento del archivo Del mismo parámetro de nombre de la
unión.

Bind variable de nombres de variable determinado por la URL de acceso,

dirección de enrutamiento también puede jugar el mismo papel Ll

resultados de salida son:

Utilice este - 181 -


documento en
viendo las nubes
construcción de
enlace
de
parámet
ros

id = 2016 = 5 años
y meses = 06

De acuerdo con el parámetro de búsqueda nombre de variable de parámetros de


unión deben ser nombre de la variable manualmente en la URL pasada en la causa,
pero no requiere parámetros orden de las páginas
Causa. que

http: //serverName/index.php/index/blog/archive/month/06/year/2016

Mano sobre resultado de acceso es consistente, la página de parámetros orden de las


páginas parámetro método de secuenciación de accionamiento manual en el URL se
puede ajustar,
La clave es asegurarse de que el nombre del parámetro causa. Si la dirección URL

de la visita del usuario es (de por qué tal visita sería dejar a un lado):

http: //serverName/index.php/index/blog/read/

Se producirá una excepción en lo siguiente:


error de
parámetro:
La razón dada es muy simple,Id
ya que en la puesta en práctica de los métodos de las
operaciones de lectura, parámetro id debe pasar parámetros, pero el método
No se puede obtener la información correcta a partir del parámetro id en la dirección
URL. Puesto que no podemos confiar en ninguna intervención del usuario, se
recomienda agregar un valor predeterminado para el parámetro id métodos de
lectura, tales como:

Public f u n c i o n l e e r ( $ i d = 0 )

return ' I d = ' $ i d .;


}

Por lo tanto, http: //serverName/index.php/index/blog/read/ cuando él


cuando nos
visita
es la salida

Utilice este - 182 -


documento en
viendo las nubes
construcción de
enlace
de
parámet
ros
id =
0

Parámetro define el defecto es siempre el método de operación es para evitar ser


dado un buen método de retorno

Buscar página de orden de enlace También puede apoyar parámetros de


URL de acuerdo con la forma de unión para la página de búsqueda, la planificación
racional del orden de las páginas de parámetros URL para simplificar la dirección URL
de unión Dirección se puede dar la ayuda de Ll.

Utilice este - 183 -


documento en
viendo las nubes
construcción de
enlace
de
parámet
ros

O el ejemplo anterior, el mismo controlador, o el uso de:

namespace a p p \ i n d ex \

Controller; class Blog

Public f u n c i o n l e e r ( $ i d )

return ' I d = ' $ i d .;


}

Public f u n c i o n A r c h iv o ( $ a ñ o = ' 2 0 1 6 ' , $ m e s = ' 0 1 ' )

return ' A ñ o = ' $ a ñ o y m e s = ' $ m e s e s . . . ;


}
}

Añadimos los siguientes parámetros de configuración en el archivo de configuración:

// U R Lde manera secuencial en


parámetros analíticos
'Url_param_type' => 1 ,

A continuación, visite la siguiente dirección URL:

http: //serverName/index.php/index/blog/read/5 http:


//serverName/index.php/index/blog/archive/2016/06

resultados de salida son:

id = 2016 = 5 años
y meses = 06

parámetro de búsqueda página de orden de enlace, entonces el parámetro de orden


de las páginas no se puede ajustar, si el acceso a:

http: //serverName/index.php/index/blog/archive/06/2016

La salida final se convierte en:

id = 5 años = 06
meses = 2016 y

Utilice este - 180 -


documento en
viendo las nubes
construcción de
enlace
de
parámet
ros

prestar atención

> Femenino femenino femenino femenino


> UR parámetros de unión Buscar la página de pedidos, a continuación, los
parámetros de funcionamiento del método sólo se pueden utilizarL Pathinfo
variable y no se puede usar u obtener las variables de correos.
El parámetro obligatorio No es un caso especial, si usted tiene un método de
operación como se define en la solicitud objeto como argumento, entonces, si los
parámetros
Ubicación en la que la inyección de forma automática, sin necesidad de que el enlace
de parámetros.

unión Architectural parámetro enfoque (V5.0.1)


Encuadernación parámetros puede ser una función de la arquitectura, los parámetros
variables de solicitud de enrutamiento actuales se pueden unir de forma automática
la función arquitectura Ll, por ejemplo
Tales como:

namespace a p p \ i n d ex \

Controller; class Blog

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

http: // localhost / index / index / índice / nombre / ThinkPHP

Ruta variable de nombre actual solicitud pasará automáticamente el valor de la


variable de nombre ThinkPHP enfoque arquitectónico.

Utilice este - 181 -


documento en
viendo las nubes
construcción de
inyecció
n de
depend
encia

inyección de dependencia

ThinkPHP inyección de dependencia (también referido como Inversión de Control)


son más semillas ligero conseguido, sin ninguna configuración, y el controlador de
acceso principal para la inyección de dependencia. Pueden ser construidos o método
de operación del controlador (referirse a una solicitud de accesoMétodo) En
cualquier declaración de tipo (tipo de objeto) dependiente, esas dependencias se
analizan automáticamente y la instancia controlador de inyección de Ll o partido Ley.

objeto de solicitud de inyección automática


método de inyección de Arquitectura
inyecta automáticamente en el enfoque de arquitectura de controlador la solicitud
de objeto actual, tales como:

namespace a p l i c a c i ón \ i n d e x \

controlador; nosotrose pensar \

Solicitud;

class ín d i c e

protected $ S o l i c i t ud ;

Public f u n c i o n construir (Request S o l i ci t u d $ )

$ This-> request = $ S o l i c i t u d ;
}

Public f u n c i o n h e l l o ( )

return ' H o l a , ' . $ Th i s - > r e q u e s t - > p a r á m e t r o ( ' n o m b r e ' ) . ' ';


}

}
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:

Utilice este - 182 -


documento en
viendo las nubes
construcción de
inyecció
n de
namespace a p l i c a c i ón \ i n d e x \
depend
encia
controlador; nosotrose pensar \

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 $ )

Utilice este - 183 -


documento en
viendo las nubes
construcción de
inyecció
n de
depend
encia

return ' H o l a , ' . $ Re q u e s t - > p a r á m e t r o (


} ' n o m b r e ' ) . ' ';

la dirección URL de acceso del tiempo de solicitud entrante sin parámetros, el


sistema inyectará automáticamente la instancia de solicitud objeto actual
Ll este parámetro.

Si hereda un sistema de clases del controlador, también puede llamar a atributos


de la petición, tales como:

<? 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 ( )

return ' H o l a , ' $ t h is - > r e q u e s t - > p a r á m e t r o ( ' n o m b r e ' ) . ;


}

E verdadero objetivo inyector automático ( V5.0.1 )


A partir de la versión 5.0.1, el método de mano enfoque de arquitectura de
funcionamiento del controlador soporta objeto arbitrario inyecta automáticamente.

método de inyección de Arquitectura

Utilice este - 184 -


documento en
viendo las nubes
construcción de
inyecció
n de
depend
namespace a p l i c a c i ón \ i n d e x \
encia
controlador; nosotrose app \

index \ modelo \ Usuario;


nosotrose p e n s a r \ So l i c i t u d ;

class ín d i c e

protected $
Solicitud; protected $
Usuario;

Public f u n c i o n construir (Request $ S o li c i t u d , u s o r E l u s u a r i o $ )

$ This-> request = $ S o l i c i t u d ;
$ This-> usor = $ U s ua r i o ;
}

Utilice este - 185 -


documento en
viendo las nubes
construcción de
inyecció
n de
depend
encia

Para el objeto se haya unido (propiedad de la inyección), y para completar


automáticamente la inyección de dependencia, si no hay ningún objeto está ligado
a
Set, a continuación, crea la instancia automáticamente nuevos objetos ejemplar
pasado (si la definición de clase tiene método de instancia, el método se llama
de instancia instanciado automáticamente).

Arquitectura depende del método de la inyección no es parámetro de tipo verdadero


impacto E vinculante.

inyección de operación
Nos modelo de usuario unión Ll petición actual de objeto:

Solicitud :: ejemplo () -> bind ( 'usuario', \ A p p \ i n d e x \ m o d e l o \ U s u a r i o : :


get (1));

A continuación, los parámetros del objeto se pueden realizar en el método de


funcionamiento del inyector automático, el código:

<? 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 $ )

return ' H o l a , ' $ u s ua r i o - > n o m b r e . ;


}

}
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:

Solicitud :: ejemplo () -> bind ( 'usuario', Ne b r a s k a w \ A p p \ i n d e x \ m o d e l o \


Usuario);
Utilice este - 186 -
documento en
viendo las nubes
construcción de
inyecció
n de
depend
IMPACT
encia objeto original no se une parámetros inyectados automáticamente.

invocar el método es llamado automáticamente ( v5.0.2 )


5.0.2 versión, si hay una clase de invocación de inyección de dependencia estática
método exigible definido se llama invocar automáticamente método se completa
automáticamente una instancia de la inyección de dependencia.

Utilice este - 187 -


documento en
viendo las nubes
construcción de
inyecció
n de
depend
encia

Invocar parámetro del método es la instancia actual de la solicitud objeto, por


ejemplo:

namespace a p l i c a c i ón \

index \ modelo; nosotrose

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);
}
}

Utilice este - 188 -


documento en
viendo las nubes
construcción de
solicitud
de
caché

solicitud de caché

Solicitud de caché ( V5.0.1 )


5.0.1 o posteriores capacidades de almacenamiento en caché de solicitud de apoyo,
el apoyo para establecer la dirección de solicitud de acceso a la caché, y
establecer la fecha de caducidad.

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:

// definicionesGETnormas solicitud de enrutamiento y establecer3600Sec caché


Ruta :: get ( 'nueva /: id', 'Noticias / leer', [ 'caché' => 3600]);

La segunda dirección de encaminamiento para acceder al mismo tiempo, solicitud de


adquisición automática de datos en caché del mediodía a emitir, y envía el 304
Código.

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:

// definicionesGETnormas solicitud de enrutamiento y establecer3600Sec caché


Ruta :: get ( 'nueva /: id', 'Noticias / leer', [
'caché' = > [ 'Nuevo /: id /: página', 3600]
]);

: Id ,: indicación página de parámetros PARAM solicitud actual identificador

Utilice este - 189 -


documento en
viendo las nubes
construcción de
solicitud
de musgo cambiar dinámicamente, es decir, de acuerdo con el ID de la mano
caché
página de solicitud de memoria intermedia variable de 3.600 segundos. Si el

argumento caché en false, que indica una petición para cerrar la caché de ruta actual

(caché incluso abrir solicitud global).

V5.0.11 + versión, la configuración de solicitud de caché soportan parámetros de


la etiqueta de caché

// definicionesGETnormas solicitud de enrutamiento y establecer3600Sec caché

Utilice este - 190 -


documento en
viendo las nubes
construcción de
solicitud
de
caché

Ruta :: get ( 'nueva /: id', 'Noticias / leer', [


'caché' = > [ 'Nuevo /: id /: página', 3600, 'noticias']
]);

ajustes dinámicos
Se puede ajustar dinámicamente solicitar que se almacenan en caché en el
comportamiento app_begin, por ejemplo:

Solicitud :: ejemplo () -> caché ( 'blog /: id', 3600);

Expresado blog /: Dirección de Identificación del acceso dinámicamente definido


búfer de solicitudes de 3.600 segundos.

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);

caché de solicitar el apoyo de un sufijo de URL, tales como:

Solicitud :: ejemplo () -> caché ( '[html]', 600);

Toda solicitud de acceso a dicho sufijo html (GET) durante 10 minutos de caché.

V5.0.11 + versión empezaron a apoyar conjunto de etiquetas de caché

Solicitud :: ejemplo () -> caché ( 'blog /: id', 600 'el blog');

V5.0.3 + versión añade la solicitud determine automáticamente el caché sólo es


necesario abrir en el fichero de configuración:

'Request_cache' => verdad


'Request_cache_expire' =>
era, 3600

Utilice este - 191 -


documento en
viendo las nubes
construcción de
solicitud
de
Se solicitaráautomáticamente la caché basada en la dirección URL de la solicitud
caché
actual (sólo para el tipo de petición GET), válido para la caché global
3600 segundos.

De la versión V5.0.4 + solicitud de apertura que puede proporcionarse en la


configuración del módulo de memoria caché solo.

Utilice este - 192 -


documento en
viendo las nubes
construcción de
solicitud
de
caché

caché de solicitud de enrutamiento sigue siendo válida y establecer prioridades.

V5.0.6 + versión, el soporte de cache establecer reglas globales solicitud de


exclusión, utilice el método siguiente:

'Request_cache' = > verda


'Request_cache_expire' dera, 3600
=> [
'request_cache_except'
'/ Blog / =>
index', '/ usuario
/ miembro
],

Request_cache_except reglas establecidas por la dirección de la solicitud de


caché no está en uso (variable no es compatible) cabeza abierta
Puntos.

Utilice este - 193 -


documento en
viendo las nubes
construcción de
base
de
datos

base
de
datos
La nueva versión de la base de datos de la reconstrucción, las principales
características del prospecto:

Tipo de conexión de división (conector) / Consulta (interrogador) / Builder


(Generador de SQL)
La consulta de
Asuntos consulta de
objeto nueva
sintaxis de consulta
de cierre del cierre
consulta mano
Encadenamiento de
procesamiento por
lotes de datos para
realizar monitor de
base de datos SQL

Utilice este - 194 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de datos

Conectarse a la base de datos

ThinkPHP capa de acceso a la base de datos abstracta construida, para


encapsular diversas operaciones de base de datos, sólo tenemos que utilizar
operación común de clase Db, sin implementar diferentes bases de datos para la
escritura de código diferente mano subyacentes, clase Db sintonizará
automáticamente Tratada con la base de datos correspondiente conducido.
Usando manera DOP ahora incluye soporte para MySQL, SQL Server, PgSQL,
SQLite y otras bases de datos.

Si la aplicación requiere una base de datos, debe configurar la información de


conexión de base de datos, base de datos de perfil Hay muchas formas definidas.

, Definición del perfil


Dos, tres método de
configuración, la
definición de clase
modelo de referencia de
los parámetros de
configuración

, Definición del perfil


configuración común es añadir los siguientes parámetros de configuración en el
catálogo de aplicación o módulo de directorio en el siguiente database.php
número:

Utilice este - 190 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de return
datos [
// 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
usuario' de datos
'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
el modo de depuración de base de datos
defectoutf8
'Contraseña'
datos
'depuración' => f a l s o ,
'Prefijo'
// implementación de base de datos:0 centralizado(Un único
servidor),1 repartido(servidor maestro y esclavo) 'Despliegue' => 0

Utilice este - 190 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de datos

// Si la base de datos para leer y


escribir separación Maestro-
esclavo efectiva
'Rw_separate' = > f a ls o ,
// Después de la lectura y
escritura separada Número de
servidores principal
'Master_num' => 1 ,
// Especifica el número de serie
];
del servidor
'Slave_no' => ' '
// Son campo de la inspección
parámetro deestá
estricta tipo compatible con una definición completa del espacio de nombres,
presente
'Fields_strict' =>
sin espacio de nombres definido, valores predeterminados
verdadera,
\ Piense \ db \ conector como extensiones de espacio de nombres si utiliza sus
propias aplicaciones de bases de datos, puede ser configurado para:

// Tipo de base de datos


'Tipo' => ' \ O r g \ d b \ M y S Q L ,

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.

V5.0.6 + versión, soporte de mecanismo de reconexión Mysql, desactivado por


defecto, si es necesario, es un archivo de configuración de base de datos
Utilice este - 191 -
documento en
viendo las nubes
construcción de
Conectars
e a la base
Piezas
de datos
puestas:

// reconexión abierto
'Break_reconnect' = > v e r d a d e r a ,

Los parámetros de conexión


Es posible que tenga que añadir los parámetros de conexión de base de datos para
las diferentes conexiones (parámetros de conexión específicos pueden consultar el
manual de PHP), en la residencia

Utilice este - 192 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de datos

Parámetros del paquete conjunto de inserción utilizados son los siguientes:

PDO :: ATTR_CASE => P D O : : C A S E _ N A T U R A L ,


PDO :: ATTR_ERRMODE => P D O : :
ERRMODE_EXCEPTION, PDO :: ATTR_ORACLE_NULLS => P D O
:: NULL_NATURAL, PDO :: ATTR_STRINGIFY_FETCHES =>
falso, PDO :: ATTR_EMULATE_PREPARES => f a l s o ,

params parámetros de conexión establecidos en la base de datos de configuración se


construirán parámetros de ajuste de mano combinados, si es necesario
Largo de conexión, y la base de datos devuelve definiciones nombres de columna
minúsculas, los siguientes métodos pueden ser utilizados:

'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 ,
],

Puede configurar los parámetros de conexión soportadas por PDO en el interior


params.

En segundo lugar, la configuración método


Podemos definir dinámicamente la información de conexión cuando se llama a la
clase Db, por ejemplo:

Utilice este - 193 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de Db :: connect ([
datos
// 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
usuario' de datos
'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'
O el uso de una cadena de caracteres:

Utilice este - 194 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de datos

Db :: connect ( 'mysql: // root: 1234@127.0.0.1: 3306 / ThinkPHP # UTF-8');

Ke se define como la concatenación de cadenas de fórmula:

Tipo de base de datos: // usuario: contraseña @ dirección de la base de datos: puerto de


la base de datos / caracteres base de datos el nombre del conjunto #
Nota: La cadena podría no definir de otro modo ciertos parámetros, como
parámetros de conexión prefijos mano.

Si tenemos en el archivo de configuración de la aplicación (tenga en cuenta que este


no es el archivo de configuración de base de datos) está configurado con información
de conexión de base de datos adicional, como por ejemplo:

//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');

En tercer lugar, la definición de clase del modelo


Si se define la conexión dentro del atributo de clase en un modelo, entonces el
modelo es funcionamiento automáticamente cuando se conecta a una
Dada la conexión de base de datos, la información de conexión en lugar del archivo
de configuración por defecto la configuración es generalmente cierto para algunos
Utilice este - 195 -
documento en
viendo las nubes
construcción de
Conectars
e a la base
de la tabla
de datos
de datos es una base de datos distinta de la conexión de base de E actual,
por ejemplo:

//información de conexión de
base de datos proporcionada por
separado en el modelo
namespace a p p \ i n d ex \
modelo;

Utilice este - 196 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de datos

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'

DSN se puede usar definir una cadena, por ejemplo:

//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

//Definido con cuerdas o


protected $ c o n n e c t io n = ' M y s q l : / / r o o t : 1 2 3 4 @ 1 2 7 . 0 . 0 . 1 : 3 3 0 6 /
ThinkPHP # ut
f8 ';
Y soporta la conexión directa con el nombre de la configuración de la base de datos,
}
por ejemplo:

Utilice este - 197 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de //información
datos 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

Utilice este - 198 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de datos

// Directamente utilizando el nombre de


parámetro de configuración
} protected $ c o n n e c t io n =
'Db_config1';

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.

referencia de los parámetros de configuración


Los siguientes son apoyados por la información de conexión de base de datos por
defecto:

nombre del descripción El valor por


parámetro
tipo Tipo de base de datos defecto
no
nombre de host Base de datos de direcciones 127.0.0.1
base de datos nombre de la base no
nombre de Nombre de usuario de base de datos no
usuario
contraseña base de datos de contraseña no
hostport número de puerto base de datos no
DSN información de conexión de base de datos DSN no
params parámetros de conexión de base de datos vacía
charset la codificación de la base de datos utf8
prefijo prefijo de la tabla de base de datos no
depurar Si el modo de depuración falso
despliegue Base de datos: 0 centralizado (solo
desplegar 0
servidor), un distribuido (desde un servidor maestro)

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

Utilice este - 199 -


documento en
viendo las nubes
construcción de
Conectars
e aconstructor
la base Constructor especifica objetos de base no
de datos

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.

Utilice este - 200 -


documento en
viendo las nubes
construcción de
Conectars
e a la base
de datos

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.

Utilice este - 201 -


documento en
viendo las nubes
construcción de
uso
básico

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.

Db :: query ( 'select * l a d o a o t r o m t h i n k _ u s e r R C E s t e i d = ' , [ 8 ] ) ? ;


Db :: execute ( 'insert i n t o t h i n k _ u s e r ( I d , n o m b r e ) v a l o r s (? , ? ) ' [ 8 , '
thinkph p ']);

También es compatible con marcadores de posición de vinculación llamada, tales


como:

Db :: query ( 'select * l a d o a o t r o m t h i n k _ u s e r R C E s t e i d = : i d ' [ ' i d ' = >


8 ] ) ; D b : : e j e c u t a r ( ' i n s e r t i n t o t h i n k _ u s e r ( I d , n o m b r e ) va l o r s ( : I d , :
Nombre) '[' id '
=> 8, 'nombre' => 'ThinkPHP']);

Es posible utilizar múltiples conexiones de bases de datos, utilizando

Db :: connect ($ config) -> query ( 'select * l a d o a o t r o m t h i n k _ u s e r R C E s t e i d


=: id '[' id '
=> 8]);

configuración de base de datos $ config es una, mano matriz de cadena de soporte


separada, puede estar conectado a la base de datos de parámetros de configuración
Nombre.

Utilice este - 202 -


documento en
viendo las nubes
construcción de
generador
de
consultas

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

Utilice este - 203 -


documento en
viendo las nubes
construcción de
datos
de la
consulta

datos de la consulta

consulta básica
los datos de la consulta mediante:

// t a b l eLos métodos deben especificar el nombre


completo de la tabla Db :: mesa ( 'think_user') -> donde
( 'id', 1) -> find ();

encontrar el método para consultar los resultados no existe, devolver null

conjunto de datos de consulta utilizada:

Db :: mesa ( 'think_user') -> donde ( 'status', 1) -> seleccionar ();

Elija un método para consultar los resultados no existe, devuelve una matriz vacía

Si la tabla de conjunto de parámetros de prefijo, se puede utilizar

Db :: nombre ( 'usuario') -> donde ( 'id', 1) -> find


(); db :: nombre ( 'usuario') -> donde ( 'status', 1) ->
seleccionar ();

Si la tabla no utiliza la función de tabla de prefijos, entonces el tipo de nombre del


efecto métodos lado de mesa.

Se puede utilizar todo el método de encadenamiento antes método de selección

hallazgo mano. Por defecto, encontrar el método de selección a mano

devuelve una matriz de todos.

ayudante
db sistema proporciona una función de ayuda, puede consultar más fácilmente:

Utilice este - 204 -


documento en
viendo las nubes
construcción de
datos
de la
db ( 'usuario') -> donde ( 'id', 1) -> find (); db
consulta
( 'usuario') -> donde ( 'status', 1) ->
seleccionar ();

Utilice este - 205 -


documento en
viendo las nubes
construcción de
datos
de la
consulta

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:

db ( 'usuario', [], false) -> donde ( 'id', 1) -> find (); db


( 'usuario', [], false) -> donde ( 'status', 1) ->
seleccionar ();

La forma de realización anterior utiliza la misma conexión de base de datos, los


parámetros de conexión para la segunda base de datos de parámetros, la base
edició ajuste
nde datos de configuración utiliza dejar perfil en blanco.
5.0.9 db por defecto ayudante ya no se
ve obligado a volver a conectar
Utilizando el objeto de consulta o investigación de cierre
O utilizar la consulta objeto de consulta, 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);

Directamente o la función de cierre de búsqueda, por ejemplo:

Db :: seleccionar (function ($ consulta)


$ Query-> Mesa ( 'think_user') -> donde ( 'status', 1);
});

la columna de valor de la consulta


Consultar el valor de un campo puede ser utilizado

// Devuelve el valor de un campo


Db :: mesa ( 'think_user') -> donde ( 'id', 1) -> valor ( 'nombre');

método del valor para consultar los resultados no existe, return null

Consultar una columna de valores se puede utilizar

Utilice este - 200 -


documento en
viendo las nubes
construcción de
datos
de la
consulta

// Devuelve una matriz


Db :: mesa ( 'think_user') -> donde ( 'status', 1) -> columna ( 'nombre');
// El índice especificado
Db :: mesa ( 'think_user') -> donde ( 'status', 1) -> columna ( 'nombre', 'id'); Db
:: mesa ( 'think_user') -> donde ( 'status', 1) -> columna ( 'id,
nombre'); / / conTP3deg etField

La columna de resultados del método no existe, devuelve una matriz vacía

conjunto de datos de procesamiento por lotes


Si necesita procesar cientos de registros de base de datos en un lugar seco,
considerar el uso de método trozo de obtener los tiempos de conjunto de resultados
Pieces, llenan entonces cada pieza de cierre de datos Ll a procesar, el método es
útil en el proceso de preparación de un gran número de registros de base de
datos.

Por ejemplo, podemos enumerar todos los datos del usuario procesados en lotes,
cada proceso de grabación 100 de usuario:

Db :: mesa ( 'think_user') -> trozo (100, f un c i ó n ( $ u s e r s )


foreach ( $ U s u a r i os u n a s $ u s u a r i o )
//
}
});
// O con el método de devolución de llamadamyUserIteratorproceso
Db :: mesa ( 'think_user') -> trozo (100, ' My U s e r I t e r a t o r ' ) ;

Puede configurar el procesamiento de anulación de los datos mediante la devolución


falsa de la función de cierre de:

Db :: mesa ( 'think_user') -> trozo (100, f un c i ó n ( $ u s e r s )


// conjunto de
resultados...
RETURn f a l s a ;
});

método de consulta de llamadas también es compatible con E antes de que los


verdaderos métodos trozo, tales como:

Utilice este - 201 -


documento en
viendo las nubes
construcción de
datos
de la
consulta
Db :: mesa ( 'think_user') -> donde ( 'puntuación', '>', 80) -> trozo (100, f u n c i ó n
($ usuario s)
foreach ( $ U s u a r i o s u n a s $ u s u a r i o )
//
}
});

El método de procesamiento trozo predeterminado se basa en los principales


consultas de clave, apoya el campo especificado, por ejemplo:

Utilice este - 202 -


documento en
viendo las nubes
construcción de
datos
de la
consulta

Db :: mesa ( 'think_user') -> trozo (100, f un c i ó n ( $ u s e r s )


// conjunto de
resultados...
RETURn f a l s a ;
}, 'CREATE_TIME');

V5.0.11 Versión comenzó, el método de trozo soporta un conjunto de datos de


procesamiento de orden de las páginas especificadas.

Db :: mesa ( 'think_user') -> trozo (100, f un c i ó n ( $ u s e r s )


// conjunto de
resultados...
RETURn f a l s a ;
}, 'CREATE_TIME', ' D es c r i p c i ó n ' ) ;

JSON consulta de datos de tipo (MySQl V5.0.1 )


// investigaciónJSONcampo tipo (infocampoJSONtipo)
Db :: mesa ( 'think_user') -> donde ( 'información $ .email', 'thinkphp@qq.com')->
find ();

Utilice este - 203 -


documento en
viendo las nubes
construcción de
Adición
de
datos

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 = [ ' F o o ' = > ' B a r ' , ' B a r ' = >


'Foo']; Db :: mesa ( 'think_user') ->
insertar ($ data);

Si usted archivo de configuración database.php es el prefijo de base de datos


(prefijo), que puede ser utilizado directamente
db Presentar
nombmétodo de la clase de datos
re
Db :: nombre ( 'user') -> insertar (datos $);

inserte un método de añadir el número de datos agregados se devuelve con éxito


éxito, inserte un rendimiento normal

Después de la adición de nuevos datos si es necesario para devolver los datos


incrementan métodos getLastInsID clave primaria se pueden utilizar:

Db :: nombre ( 'user') -> insertar (datos $);


$ USERId = D b : : n o mb r e ( ' u s u a r i o ' ) - > g e t L a s t I n s I D ( ) ;

O directamente utilizando los datos y devolver el nuevo método insertGetId


valores de clave principal:

Db :: nombre ( 'usuario') -> insertGetId ($ data);

Utilice este - 204 -


documento en
viendo las nubes
construcción de
Adición
de
datos
un método de adición insertGetId de datos de retorno éxito de los datos de clave
primaria se añade por

Añadir datos múltiples


Añadir varios datos directamente en la necesidad de añadir un método a los datos
de clase insertAll Db pueden ser

Utilice este - 205 -


documento en
viendo las nubes
construcción de
Adición
de
datos

$ 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 $);

// Añadir datos múltiples


db ( 'usuario') -> insertAll (lista $);

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.

El siguiente ejemplo ilustra el uso de:

Db :: mesa ( 'datos')
-> Datos ([ 'nombre' => 'TP', 'puntuación' => 1000])
-> Insertar ();

Utilice este - 206 -


documento en
viendo las nubes
construcción de
actualiz
ación de
datos

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']);

Si los datos contienen una clave principal, se puede utilizar directamente:

Db :: mesa ( 'think_user') -> actualización ([ 'nombre' = > ' T h i n k P HP ' , ' i d ' = > 1 ] ) ;

método devuelve el número de piezas de IMPACTO datos de actualización, no se


modifican los datos devueltos 0

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'],
]);

Actualizar el valor de un campo:


Db :: mesa ( 'think_user') -> donde ( 'id', 1) -> setField ( 'nombre', ' T h i n k P H P ' ) ;

método IMPACT SetField devuelve el número de piezas de datos, no modifique


cualquier campo de datos devuelve 0

Incrementando o menoscabo de campo


setInc / No se añade el segundo argumento, el valor por defecto es 1
setDec

Utilice este - 207 -


documento en
viendo las nubes
construcción de
actualiz
ación de
// S C O R e además terreno 1
datos
Db :: mesa ( 'think_user') -> donde ( 'id', 1 ) - > s e t I n c ( ' p u n t u a c i ó n ' ) ;
// S C O R e además terreno 5
Db :: mesa ( 'think_user') -> donde ( 'id', 1 ) - > s e t I n c ( ' p u n t u a c i ó n ' , 5 ) ;

Utilice este - 208 -


documento en
viendo las nubes
construcción de
actualiz
ación de
datos

// 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

Db :: mesa ( 'think_user') -> donde ( 'id', 1 ) - > s e t I n c ( ' p u n t u a c i ó n ' , 1 , 1 0 ) ;

método setInc / setDec devuelve el número de piezas de IMPACT datos

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 ' ) ;

actualización rápida ( v5.0.5 + )


datos v5.0.5 + Paquete sobre, método inc, DEC método de la mano exp
pertenece encadenamiento se pueden utilizar con la actualización.

El siguiente ejemplo ilustra el uso de:

Db :: mesa ( 'datos')
-> donde ( 'id', 1)
-> inc ( 'leer')
-> DEC ( 'puntuación', 3)
-> exp ( 'nombre', 'SUPERIOR (nombre)')
-> actualización ();

Utilice este - 209 -


documento en
viendo las nubes
construcción de
actualiz
ación de
datos

Utilice este - 210 -


documento en
viendo las nubes
construcción de
borrado
de
datos

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 ();

vuelve borrar método devuelve el número de piezas de IMPACTO datos, no


eliminado 0

ayudante
// Eliminar de acuerdo a la clave primaria
db ( 'usuario') -> delete (1);
// Eliminación
db ( 'usuario') -> donde ( 'id', 1) -> delete ();

Utilice este - 211 -


documento en
viendo las nubes
construcción de
método
s de
consulta

métodos de consulta

Condiciones métodos de consulta


donde método
El método se puede utilizar cuando se dan condiciones AN y de consulta:

Db :: mesa ( 'think_user')
-> donde ( 'nombre', 'como', '% ThinkPHP')
-> donde ( 'status', 1)
-> find ();

Y de múltiples campos de las mismas condiciones de la consulta puede simplificarse


de la siguiente manera:

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 ();

O múltiples campos de las mismas condiciones de la consulta se pueden simplificar


como sigue:

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:

Utilice este - 212 -


documento en
viendo las nubes
construcción de
método
s de
$ Result = D b : : m e sa ( ' t h i n k _ u s e r ' ) - > d o n d e ( f u n c i o n ( $ C o n s u l t a )
consulta
$ Query-> donde ( 'id', 1 ) - > w h e r e o r ( ' i d ' , 2 ) ;
}) -> whereOr (funcion ($ C o n s u l t a )

Utilice este - 213 -


documento en
viendo las nubes
construcción de
método
s de
consulta

$ 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 ();

Generada instrucción SQL similar al siguiente:

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 ' )

Observe que la consulta a la orden de las páginas de cierre, y consultar el primer


método donde no hay diferencia o whereOr.

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

// obtener, Think_user,Todo tabla de información


Db :: getTableInfo ( 'think_user');
// obtener, Think_user,Todos los campos de la tabla
Db :: getTableInfo ( 'think_user', ' F i e l ds ' ) ;
// obtener, Think_user,Todos los campos de la tabla
Db :: getTableInfo ( 'think_user', ' T i p o ') ;
// obtener, Think_user,la clave primaria de la tabla
Db :: getTableInfo ( 'think_user', ' P k ' ) ;

Utilice este - 210 -


documento en
viendo las nubes
construcción de
sintaxis
de la
consulta

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:

donde ('nombre del campo''expresión''pregunta');


whereOr ('nombre del campo''expresión''pregunta');

Expresión caso insensible, expresiones de consulta de apoyo son las siguientes


categorías, es decir, respectivamente, son:

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

Utilice este - 211 -


documento en
viendo las nubes
construcción de
sintaxis
denotbetween
la comparación del tiempo
consulta
tiempo
Ejemplo de uso expresión de consulta de la siguiente manera:

Utilice este - 212 -


documento en
viendo las nubes
construcción de
sintaxis
de la
consulta

EQ: igual (=)


Por ejemplo:

donde ( 'id', 'eq', 100);


donde ( 'id', '=', 100);

La siguiente consulta es parte equivalente

donde ( 'id', 100);

Consulta se expresa yod =


100
NEQ: no es igual a (<>)
Por ejemplo:

donde ( 'id', 'neq', 100);


donde ( 'id', '<>', 100);

Consulta se expresa yod < > 1 00

GT: mayor que (>)


Por ejemplo:

donde ( 'id', 'gt', 100);


donde ( 'id', '>', 100);

Consulta se expresa yod > 10 0

EGT: mayor o igual que (> =)


Por ejemplo:

donde ( 'id', 'egt', 100);


donde ( 'id', '> =', 100);

Consulta se expresa yod > = 1 00

LT: menor que (<)


Por ejemplo:
Utilice este - 213 -
documento en
viendo las nubes
construcción de
sintaxis
de la
consulta

donde ( 'id', 'lt', 100);


donde ( 'id', '<', 100);

Consulta se expresa yod <


100
ELT: Menor o igual que (<=)
Por ejemplo:

donde ( 'id', 'elt', 100);


donde ( 'id', '<=', 100);

Consulta se expresa yod < =


100
[NO] COMO: LIKE con el sql
Por ejemplo:

donde ( 'nombre', 'como', 'ThinkPHP%');

consulta se convierte
name li k e ' Th in kPH P %'

V5.0.5 + versión comenzaron, como soporte de consulta utilizando matrices

donde ( 'nombre', 'como', [ '% piensa', 'php%'], 'OR');

[NO] ENTRE: SQL con el [no] entre


cuerda de soporte de consulta o matriz, por ejemplo:

donde ( 'id', 'entre', '1,8');

Mano siguiente equivalente:

donde ( 'id', 'entre', [1,8]);

consulta se convierte
yod T RE N 1 A N D 8

[NO] EN: con el sql [no] en


cuerda de soporte de consulta o matriz, por ejemplo:
Utilice este - 214 -
documento en
viendo las nubes
construcción de
sintaxis
de la
consulta

donde ( 'id', 'sint en ' ' 1 , 5 , 8 ' ) ;

Mano siguiente equivalente:

donde ( 'id', 'sint en ' , [ 1 , 5 , 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 ');

Si necesita consultar un campo de cadena es nulo o no nulo, se debe utilizar:

donde ( 'title', '=', ' N u l l ' ) ;


donde ( 'nombre', '=', ' N o s e t n u l l ' ) ;

EXP: Expresión
Admitir las consultas más complejas como por ejemplo:

donde ( 'id', 'en', '1,3,8');

Puede ser cambiado a:

donde ( 'id', 'exp',' y o N ( 1 , 3 , 8 ) ' ) ;

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.

Utilice este - 215 -


documento en
viendo las nubes
construcción de
sintaxis
de la
consulta

Utilice este - 216 -


documento en
viendo las nubes
construcción de
encaden
ando

encadenando

método proporcionado por la base de datos de encadenamiento, el código puede


mejorar efectivamente la eficiencia del desarrollo nitidez de la mano de acceso a
datos, y soporta todas las operaciones de cuajada.

El uso es también relativamente simple, si queremos consultar un estado de la tabla


de usuario satisface las primeras 10 filas de 1, y encontramos como se desee para
crear un código de usuario ordenado por tiempo es el siguiente:

Db :: mesa ( 'think_user')
-> donde ( 'status', 1)
-> orden ( 'CREATE_TIME')
-> límite (10)
-> seleccionar ();

en este caso, el límite para la mano se llama método de encadenamiento,


excepto que el método de descarga debe seleccionar
A Ll exterior final (método debido a que el método de selección no está Chaining), el
encadenamiento de llamada de método no tiene ninguna orden de las páginas, por
ejemplo, el código siguiente a la manos equivalente arriba:

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 ();

Utilice este - 217 -


documento en
viendo las nubes
construcción de
encaden
ando
Cadena borra automáticamente todas las operaciones de la cadena de valor después
de la finalización de la investigación. En resumen, el resultado de una operación de la
cadena no tomará
E de nuevo en las consultas

reales. El sistema soporta

métodos de encadenamiento

son:

Utilice este - 218 -


documento en
viendo las nubes
construcción de
encaden
ando

explotación efecto tipos de parámetros


coherente
donde las Y para la consulta soportados
Cuerda, objetos
mujeres
mujer Consultas para OR matrices mano
Cuerda, objetos
whereOr
mujer Tiempo para la fecha de referencia matrices
cadena mano
wheretime
mesa rápida
Define yelfácil
nombre de una tabla de matriz de cadena de
alias datos para
La tabla de ser operado
datos actual se utiliza para la mano
cadena
de campo definir unpara
Se utiliza aliasdefinir los campos que matriz de cadena de
femenino
para Mujer desea consultar
Se utiliza (campolos
para ordenar Soporte
resultados la mano
matriz de cadena de
excluido) la mano de la
límite Se utiliza para limitar el número de Secuencia
página resultados
Utiliza parade la consulta
consultar paginación mano digitales
Secuencia de la
grupo (interna convertido
Para el apoyo en límite)
del grupo de consulta mano
cadenadigitales
tener Soporte para tener la consulta cadena
unirse a la mujer Para unirse a las consultas de apoyo matriz de cadena de
Unión Para el apoyo sindical para las la mano objetos
Cuerda,
femenina
Ver las mujeres consultas
Para ver la consulta matrices mano
Cadenas, matrices
distinto El apoyo a las consultas de distintos valor booleano
bloquear Para el mecanismo de bloqueo de la valor booleano
cache basecaché
Por de datos
de consultas Soporte para
relación Para consultas relacionadas múltiples
cadena
femenina parámetros
con las mujeres Asociación para la precarga Cadenas, matrices
las mujeres se Los datos para la operación de enlace Array o más
unen
comentario Para el comentario de SQL parámetros
cadena
fuerza S para la fuerza del cable de datos cadena
maestro Vender servidor principal para ir a valor booleano
estricto buscar
Yan Ke los datos
se proporciona para detectar si valor booleano
secuencia existe o node
secuencia el la
nombre del
subasta campo
para configurar cadena
failException el nombre
Ya sea parade Pgsql
establecer los datos de valor booleano
tabique consulta Ll no
Información lanzar
para una excepción de
el establecimiento Matriz de cadenas
una subtabla

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.

Utilice este - 219 -


documento en
viendo las nubes
construcción de
encaden
ando

Utilice este - 220 -


documento en
viendo las nubes
construcción de
encaden
ando

donde

Cuando el uso del método es la esencia de ThinkPHP lenguaje de consulta, sino


también una parte importante de los aspectos más destacados de ThinkPHP ORM
lado, se puede completar el prospecto consulta normal, la expresión de consulta,
consultas rápidas, las búsquedas por rangos, consultas combinadas, incluyendo
consultas Operación. No se recomienda parámetros en los métodos soportan una
matriz de cadenas parte, aunque también se puede utilizar el objeto.

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 ();

Más sintaxis de expresiones de consulta, puede hacer referenciasintaxis de la


consultaSección.

Una serie de condiciones


Puede condiciones de consulta lote establecido por una gran variedad de maneras.

investigación general
La forma más fácil de consultar una serie de la siguiente manera:

$ Mapa [ 'nombre'] = ' Th i n k P H P ' ;


$ Mapa [ 'status'] = 1;
// El sucesor consulta método de consulta
Db :: mesa ( 'think_user') -> donde ($ mapa) -> seleccione ();

// función de ayuda
db ( 'usuario') -> donde ($ mapa) -> seleccione ();

Por último, la instrucción SQL generado es

SELECT * F R OM t h i n k _u s e r w h e r E , N o m b r e , T h i n k P H P = ' ' A N D e s t a d o = 1

Utilice este - 221 -


documento en
viendo las nubes
construcción de
encaden
ando
consulta Expresiones
Se puede utilizar una gran variedad de condiciones en la expresión de consulta, tales
como:

$ Mapa [ 'id'] = [ ' > ' , 1 ] ;


$ Mapa [ 'mail'] = [ ' L i k e ' , ' % t h i n k p h p @ q q . c o m % ' ] ;

Utilice este - 222 -


documento en
viendo las nubes
construcción de
encaden
ando

Db :: mesa ( 'think_user') -> donde ($ mapa) -> seleccione ();

condición cuerdas
Condiciones consulta directamente cadena de operación con una mano, por ejemplo:

Db :: mesa ( 'think_user') -> donde ( 'type =1 A N D e s t a d o = 1 ' ) - > s e l e c c i o n e


();

Por último, la instrucción SQL generado es

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

Cuando se utiliza una cuerda condiciones, se recomienda un tratamiento previo con


mecanismos para garantizar la mayor seguridad, tales como:

Db :: mesa ( 'think_user') -> donde ( "id = id u n a d = n o m b r e d e u s u a r i o : n o m b r e


") -> bind ([ 'id' =>
[1, \ PDO :: PARAM_INT], 'nombre' => 'ThinkPHP']) -> seleccionar ();

Utilice este - 220 -


documento en
viendo las nubes
construcción de
encaden
ando

mesa

método de la tabla se utiliza principalmente para especificar las operaciones de tabla


de datos.

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:

1. Mesa de operaciones de conmutación de datos;


2. operación multi-

mesa, por ejemplo:

Db :: mesa ( 'think_user') -> donde ( 'status> 1') -> seleccione ();

También se puede especificar en el método de la tabla de base de datos, por


ejemplo:

Db :: mesa ( 'db_name.think_user') -> donde ( 'status> 1') -> seleccione ();

El método de la tabla de datos de tabla especificado requiere una tabla completa,


pero los métodos siguientes se puede utilizar para simplificar la tabla de prefijos de
datos entrante, Ejemplo
Tales como:

Db :: mesa ( ' USUARIO ') -> donde (' status> 1 ') -> seleccionar ();

adquiere automáticamente las tablas de think_user Nombre de la tabla de


datos de prefijos correspondientes al datos.
modelo actual se genera

Observe que la tabla no cambia el método de conexión a la base de datos, por lo


que desea asegurarse de que el usuario tiene permiso para operar conectado
Utilice este - 221 -
documento en
viendo las nubes
construcción de
encaden
ando

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.

Si necesita operar en varias tablas, se puede utilizar la siguiente manera:

Db :: campo ( 'user.name, role.title')


-> mesa ( 'think_user u s u a r i o , t h i n k _ r o l e p a p e l ' )
-> límite (10) -> seleccione ();

Utilice este - 222 -


documento en
viendo las nubes
construcción de
encaden
ando

Con el fin de evitar conflictos MySQL mano de palabras clave, podemos recomendar
el uso de matrices de definir, por ejemplo:

Db :: campo ( 'user.name, role.title')


-> Mesa ([=> 'usuario' 'think_user', 'think_role' => 'papel'])
-> límite (10) -> seleccione ();

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.

Utilice este - 223 -


documento en
viendo las nubes
construcción de
encaden
ando

alias

alias alias para el establecimiento de la tabla de datos actual, muy fácil de

usar sus operaciones consecutivas como Métodos de unión. Ejemplo:

Db :: mesa ( 'think_user') -> alias ( 'a') -> join ( ' DEPARTAMENTO b ''
B.user_id= a.id '
) -> seleccione ();

La sentencia SQL generada última se ve así:

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:

Db :: mesa ( 'think_user') -> alias ([ 'think_user' => 'usuario', 'think_dept' =>


'departamento'
]) -> join ( 'think_dept', 'dept.user_id= u se r . i d ' ) - > s e l e c c i o n e ( ) ;

La sentencia SQL generada última se ve así:

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

Utilice este - 224 -


documento en
viendo las nubes
construcción de
encaden
ando

campo

Un método de funcionamiento de un modelo coherente pertenece método de


campo, el objetivo principal es identificar o para devolver el campo de operación, la
operación puede ser utilizado para consultar la escritura a mano.

para realizar consultas


El campo especificado
En el método del campo de operación de consulta se utiliza con mayor frecuencia.

Db :: mesa ( 'think_user') -> campo ( 'id, título, contenido') -> seleccione ();

Como se usa en el presente documento, un campo de resultado especifica el conjunto de


la método de consulta que comprende ID, el título, los valores de contenido de tres
campos. fase de ejecución de SQL
Como en:

SELECT i d , t i t l e , c on t e n t F R O M m e s a

Se puede establecer un alias para un campo, por ejemplo:

Db :: mesa ( 'think_user') -> campo ( 'id, nickname u n as N o m b r e ') - > s e l e c c i o n e


();

La ejecución de sentencia SQL es equivalente 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

Uso de las funciones de SQL


Función se puede usar directamente en el método de campo, por ejemplo:

Db :: mesa ( 'think_user') -> campo ( 'id, SUM (puntuación)') -> seleccione ();

ejecución de SQL es equivalente a:

Utilice este - 225 -


documento en
viendo las nubes
construcción de
encaden
ando
SELECT I d e n t i f i c a c i ón , S U M ( p u n t u a c i ó n ) F R O M m e s a

Utilice este - 226 -


documento en
viendo las nubes
construcción de
encaden
ando

Además del método de selección, todos los métodos de consulta, campo


prospecto encontrar métodos similares pueden usarse.

Utilice parámetro de matriz


La matriz campo de parámetro método puede apoyar, por ejemplo:

Db :: mesa ( 'think_user') -> campo ([ 'id', 'título', 'contenido']) -> seleccione ();

SQL parte frontal ejecutado última es equivalente a una cadena de caracteres.

Definir una matriz alias de realización se pueden definir para ciertos campos, por
ejemplo:

Db :: mesa ( 'think_user') -> campo ([ 'id', 'apodo' => 'nombre']) -> seleccione ();

ejecución de SQL es equivalente 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

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 ();

ejecución de SQL es equivalente a:

SELECT I d e n t i f i c a c i ón , c o n c a t ( n o m b r e , ' - ' , I D ) u n a s n o m b r e v e r d a d e r o ,


I Z Q U I E R D A ( t í t u l o , 7 ) u n a s s u b _ t i t l e F R OM t a b l a

Obtener todos los campos


Si usted tiene una mesa hay una gran cantidad de áreas deben obtener todos los
campos (esto puede ser muy simple, ya que el partido no llama campo
Método o método directo usando un campo vacío puede hacer Ll):

Utilice este - 227 -


documento en
viendo las nubes
construcción de
encaden
ando
Db :: mesa ( 'think_user') -> seleccione (); db ::
mesa ( 'think_user') -> campo ( '*') -> seleccione
();

El uso anterior es equivalente, que son equivalentes para ejecutar SQL:

Utilice este - 228 -


documento en
viendo las nubes
construcción de
encaden
ando

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:

Db :: mesa ( 'think_user') -> campo (verdadero) -> seleccione ();

campo (verdadero) el uso voluntad explícita Cuadro presenta todos los campos,
incluso si la tabla tiene 100 palabras
Sección.

Los campos excluidos


Si quiero conseguir todas las palabras para excluir tabla de datos de campo de
contenido (el valor del campo de texto es el consumo de memoria muy) fuera
valor de segmento, se puede utilizar el método de campo de exclusión, por ejemplo,
de la siguiente manera se puede decir para lograr una funcionalidad:

Db :: mesa ( 'think_user') -> campo ( 'contenido', true) -> seleccione ();

A continuación, recupera todos los campos, además del contenido, para excluir más
campos también puede:

Db :: mesa ( 'think_user') -> campo ( 'user_id, el contenido', true) -> seleccione


();
//o el uso
Db :: mesa ( 'think_user') -> campo ([ 'user_id', 'contenido'], true) -> seleccione
();

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:

Db :: mesa ( 'think_user') -> campo ( 'titulo, el correo electrónico, el contenido')


-> insertar (datos $);

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.

Utilice este - 230 -


documento en
viendo las nubes
construcción de
encaden
ando

En el caso de campos de la tabla de datos abierta Yan Ke examen, presentó un


campo ilegal arrojará una excepción, puede configurar el archivo de
configuración de base de datos:

// Cerca de
inspección de campo falso,
estricto
'Fields_strict' = >

Utilice este - 231 -


documento en
viendo las nubes
construcción de
encaden
ando

orden

El método de funcionamiento de un orden coherente que

pertenece al modelo del método para la clasificación de los

resultados de la operación. El uso es como sigue:

Db :: mesa ( 'think_user') -> donde ( 'estado = 1') -> orden (id d e sc ' ) - >
límite (5) -> s elegidos ();

Nota: no existe un método consistente de orden de las páginas operación, puede


cambiar fácilmente el orden de las páginas antes de que el método de selección de
llamada llamada.

Es compatible con la clasificación en varios campos, tales como:

Db :: mesa ( 'think_user') -> donde ( 'estado = 1') -> orden (id d e sc , e s t a d o ) - >
Limi t (5) -> seleccione ();

Si no se especifica asc o desc cotejo, el valor predeterminado es asc.

Si su mano mysql campo de palabras clave que hay un conflicto, se recomienda el


uso de una gran variedad de formas de llamar, por ejemplo:

Db :: mesa ( 'think_user') -> donde ( 'estado = 1') -> orden ([ 'orden', 'id' =>
'desc'])
-> límite (5) -> seleccionar ();

Utilice este - 232 -


documento en
viendo las nubes
construcción de
encaden
ando

límite

El método también limitar el número de métodos de funcionamiento coherente clase


de modelo, principalmente para la operación de consulta mano especificado,
especialmente cuando las consultas de paginación utilizan más. ThinkPHP el límite
del método es compatible con toda clase con bases de datos.

Limitar el número de resultados


Tales como el acceso a cumplir con los requisitos del usuario 10, puede ser la
siguiente llamada:

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:

Db :: mesa ( 'think_article') -> límite ('10, 25 ') -> seleccione ();

El artículo indica que los datos de la consulta, 25 de datos a partir de la línea 10


(sombra donde las condiciones también pueden depender del tipo de cambio de
orden
Esto a un lado del mediodía). También

puede utilizar esta función es como:

Utilice este - 233 -


documento en
viendo las nubes
construcción de
encaden
ando
Db :: mesa ( 'think_article') -> límite (10,25) -> seleccione ();

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.

Utilice este - 234 -


documento en
viendo las nubes
construcción de
encaden
ando

Utilice este - 230 -


documento en
viendo las nubes
construcción de
encaden
ando

página

El método de enfoque es también modelo de funcionamiento constante de la página,


es un método personal de operación para la consulta de búsqueda completa nacido.

Ya hemos aprendido acerca de la situación con respecto a limitar método para la


consulta de búsqueda, y la página es un método más humano de conducta método
de consulta de paginación, por ejemplo, o en la página de lista artículo, por ejemplo,
si el enfoque de limitar el uso, que se va a consultar la página lado, la segunda
página (suponemos 10 por datos de salida) redactado como sigue:

// La consulta de datos primera página


Db :: mesa ( 'think_article') -> límite ( '0,10') -> seleccionar ();
// La consulta de datos segunda página
Db :: tabla ( 'think_article') -> límite ('10, 10 ') -> seleccione ();

Durante el uso de la biblioteca de clases de clases paginación Página prolongado


puede calcular automáticamente los parámetros de límite para cada página, pero si
usted quiere escribir su propia
Es más laborioso, si la página es una forma sencilla de escribir más, por ejemplo:

// La consulta de datos primera página


Db :: mesa ( 'think_article') -> página ( '1,10') -> seleccionar ();
// La consulta de datos segunda página
Db :: mesa ( 'think_article') -> página ( '2,10') -> seleccionar ();

Resultará evidente que, no es necesario utilizar el método de la página calcula la


posición de partida para cada página de datos, el método será a partir de la página
interior
Calculado automáticamente.

Un límite método de la mano, página también admite la escritura de dos parámetros,


por ejemplo:

Db :: mesa ( 'think_article') -> página (1,10) -> seleccione ();


// La siguiente uso y equivalente
Db :: mesa ( 'think_article') -> página ( '1,10') -> seleccionar ();

Utilice este - 231 -


documento en
viendo las nubes
construcción de
encaden
ando
El método puede promover página límite mano con un método, por ejemplo:

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:

Utilice este - 232 -


documento en
viendo las nubes
construcción de
encaden
ando

Db :: mesa ( 'think_article') -> página ( '3,25') -> seleccionar ();

Utilice este - 233 -


documento en
viendo las nubes
construcción de
encaden
ando

grupo

GRUPO A método de funcionamiento de un método coherente se usa típicamente


en conjunción con funciones de agregado, de acuerdo con una o más columnas del
conjunto de resultados en agrupamiento de filas.

El método de grupo de parámetros, y únicamente en la cadena. Por ejemplo,

nosotros todos los resultados de la búsqueda como la identificación del usuario a las

estadísticas del grupo:

Db :: mesa ( 'think_user')
-> campo ( 'user_id, nombre de usuario, max (puntuación)')
-> grupo ( 'user_id')
-> seleccionar ();

sentencia SQL generado es:

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 ();

sentencia SQL generado es:

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

Utilice este - 234 -


documento en
viendo las nubes
construcción de
encaden
ando

tener

Tener un método de operación es consistente, con el grupo para la realización de los


resultados del método a partir del paquete de selección (generalmente poli
estado de acoplamiento) de datos.

El método de la que presenta sólo parámetros, y sólo en la cadena, por ejemplo:

Db :: mesa ( 'think_user')
-> campo ( 'nombre de usuario, max (puntuación)')
-> grupo ( 'user_id')
-> having ( 'count (test_time)> 3')
-> seleccionar ();

sentencia SQL generado es:

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

Utilice este - 235 -


documento en
viendo las nubes
construcción de
encaden
ando

unirse

Únete por lo general tienen los siguientes tipos, diferentes tipos de impacto acción
de unir datos devueltos resultados.

INNER JOIN: equivalente a la, si la tabla tiene al menos un partido, línea de


retorno JOIN (por defecto el tipo de combinación)
LEFT JOIN: incluso si no hay ninguna coincidencia en la
tabla de la derecha, también devuelve todas las filas desde
la derecha izquierda de la tabla de Ingreso: incluso si no
hay una tabla de coincidencias a la izquierda, también
devuelve todas las filas de la tabla derecha LLENA SE
UNEN A: Siempre y cuando hay una coincidencia en una
mesa real, la línea de retorno

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']] )

JOIN método de funcionamiento del método también es consistente, de acuerdo


con una relación entre dos o más columnas en la tabla, estas tablas de Charles
datos de

consulta.

parámetros

unirse

Para asociar el (completo) nombre de tabla y un alias

Es compatible con los tres tipos de escritura:

Utilice este - 236 -


documento en
viendo las nubes
construcción de
encaden
ando
escritura1:[ ' Completar la tabla o
subconsulta'=>'alias' ] escritura2:'nombre
de la tabla completa alias'
escritura3:'Nombre de la tabla sin las tablas
de datos de prefijo'
condición

condiciones relacionadas. Puede ser una cadena o una matriz, Es una matriz cada elemento está
asociado con una condición.

tipo

Tipo de asociación. lata: INNER,IZQUIERDA,DERECHO,COMPLETOmayúsculas y minúsculas, por


defectoINTERIOR.

Utilice este - 237 -


documento en
viendo las nubes
construcción de
encaden
ando

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 ();

El efecto de estas tres TRABAJO TARJETA Cuando se convierte a una


muestras de escritura, man resolución final
o
think_work think_card mano. Nota: el centro de la mesa el nombre de tabla' de
esta manera requiere mayúsculas

Si no desea utilizar un alias, esta última condición es necesaria para utilizar el


nombre completo de la tabla de abajo se puede utilizar de esta manera

Db :: mesa ( 'think_user') -> join ( ' TRABAJO '' ARTISTA .id = TRABAJO
.artist
_id ') -> seleccione ();

Predeterminados combinación interna cierto, si realmente necesita usar unirse a su


manera, se puede cambiar
Utilice este - 238 -
documento en
viendo las nubes
construcción de
encaden
ando

Db :: mesa ( 'think_user') -> alias ( 'a') -> join ( 'WORd w ' ' a i d = w . a r t i s t _ i d
'' correcto ') -> seleccione ();

Nombre de la tabla también puede ser una sub-consulta

$ Subsql = D b : : m e sa ( ' t h i n k _ w o r k ' ) - > d o n d e ( [ ' s t a t u s ' = > 1 ] ) - > c a m p o


(' artist_id

Utilice este - 239 -


documento en
viendo las nubes
construcción de
encaden
ando

, Count (id) c o n t a r ' ) - > g r u p o ( ' a r t i s t _ i d ' ) - > B u i l d S Q L ( ) ;


Db :: mesa ( 'think_user') -> alias ( 'a') -> join ([$ = subsql> ' W ' ] , ' A . a r t i s t _ i d
= W.artist_id ') -> seleccione ();

declaración de vencimiento de la declaración BuildSQL con (), por lo que no hay


necesidad en ambos extremos más ().

Utilice este - 240 -


documento en
viendo las nubes
construcción de
encaden
ando

unión

UNIÓN conjunto resultado de la operación se utiliza para

combinar dos o más de la instrucción SELECT. Ejemplo de uso:

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 ();

UNION ALL operaciones de apoyo, tales como:

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 ();

Utilice este - 241 -


documento en
viendo las nubes
construcción de
encaden
ando

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 ();

Cada método es equivalente a un sindicato independiente de la instrucción SELECT.

Nota: instrucción UNION SELECT interna debe tener el mismo número de


columnas. Las columnas también deben tener tipos de datos similares. Mientras
tanto, la secuencia de la página de cada instrucción SELECT debe ser el mismo.

Utilice este - 242 -


documento en
viendo las nubes
construcción de
encaden
ando

distinto

DISTINCT método devuelve un CD-valores diferentes. Por

ejemplo, una tabla de base de datos tiene los siguientes datos

El siguiente código volverá diferentes campos de datos user_login

Db :: mesa ( 'think_user') -> distinta (verdadero) -> campo ( 'user_login') ->


seleccione ();

sentencia SQL generado es: di st in c T us e r_ lo gi n F RO M thi n k_ us er


SELECT

Devuelve la siguiente matriz

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 "
}
}

El método es parámetros distintos de valores booleanos.

Utilice este - 240 -


documento en
viendo las nubes
construcción de
encaden
ando

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 ();

Se generará automáticamente sentencias SQL a la final con FOR UPDATE o


FOR UPDATE NOWAIT (Oracle
Base de datos).

apoyar método de bloqueo de la cadena de entrada para el bloqueo de algunos


requisitos especiales, tales como:

Db :: nombre ( 'usuario') -> donde ( 'id', 1) -> cerradura ( 'lock y on S h a r e M o d o ' )


-> find ();

Utilice este - 241 -


documento en
viendo las nubes
construcción de
encaden
ando

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é.

Ejemplifica a continuación, por ejemplo, se utiliza el método siguiente para encontrar


métodos 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:

Db :: mesa ( 'think_user') -> caché (verdadero, 60) -> find ();


// O usado de la siguiente manera Es equivalente
Db :: mesa ( 'think_user') -> caché (60) -> find ();

resultados de la consulta de caché expresadas son válidos durante 60 segundos.

cache cache identificar formas de especificar:

Db :: mesa ( 'think_user') -> caché ( 'clave', 60) -> find ();

La identidad de la caché de consulta especificada hace que el caché de consulta


Utilice este - 242 -
documento en
viendo las nubes
construcción de
encaden
ando
más eficiente.

De esta manera, en el exterior se puede pensar \ \ datos de la clase caché de


consultas directamente caché, por ejemplo:

$ Result = D b : : m e sa ( ' t h i n k _ u s e r ' ) - > c a c h é ( ' c l a v e ' , 6 0 ) - > f i n d ( ) ;


$ Datuna = \ P i e n s e \ C a c h e : : g e t ( ' l l a v e ' ) ;

método de caché apoya el establecimiento de una etiqueta de caché, por ejemplo:

Utilice este - 243 -


documento en
viendo las nubes
construcción de
encaden
ando

Db :: mesa ( 'think_user') -> caché ( 'clave', 60 'tagName') -> find ();

Caché actualiza automáticamente


Aquí está caché se actualiza automáticamente una vez que se refiere a la
actualización de los datos o borrar la memoria caché limpiar automáticamente
después de (la próxima vez que se recuperará automáticamente
Re-cache). Cuando se elimina o actualizar datos, el método se puede utilizar para

actualizar manualmente el caché (borrar) la memoria caché, por ejemplo:

Db :: mesa ( 'think_user') -> caché ( 'user_data') -> seleccione ([1,3,5]); db :: mesa


( 'think_user') -> caché ( 'user_data') -> Actualización ([ 'id' => 1, 'nombre' => 'thi
nkphp']);
Db :: mesa ( 'think_user') -> caché ( 'user_data') -> seleccione ([1,5]);

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é.

Si se utiliza el método de búsqueda y el uso de la consulta de clave principal


identifica la necesidad de especificar la memoria caché, se borrará automáticamente
la caché, por ejemplo:

Db :: mesa ( 'think_user') -> caché (verdadero) -> find (1); db :: mesa (


'think_user') -> actualización ([ 'id' => 1, 'nombre' => 'ThinkPHP ']);
Db :: mesa (' think_user ') -> caché (verdadero) -> find (1);

Los últimos datos de la consulta se actualizan los datos.

Utilice este - 244 -


documento en
viendo las nubes
construcción de
encaden
ando

comentario

COMENTARIO Un método para añadir contenido de anotación en la instrucción SQL


generada, por ejemplo:

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 ();

La sentencia SQL generada final es:

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 * /

Utilice este - 245 -


documento en
viendo las nubes
construcción de
encaden
ando

fetchSql

fetchSql cambio de consulta SQL se ejecuta directamente en vez de por cualquier


método CUAJADA de operación. Por ejemplo:

$ Result = D b : : m e sa ( ' t h i n k _ u s e r ' ) - > f e t c h S q l ( v e r d a d e r o ) - > f i n d ( 1 ) ;

Resultados resultado de salida:


SELECT * F RO M th in k _u se r R CE st e yod =
1

Utilice este - 246 -


documento en
viendo las nubes
construcción de
encaden
ando

fuerz
a
S proceso de fuerza para los datos de fuerza de la cuerda establecen operaciones,
tales como:

Db :: mesa ( 'think_user') -> fuerza ( 'usuario') -> seleccione ();

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.

Utilice este - 247 -


documento en
viendo las nubes
construcción de
encaden
ando

lazo

Método de enlace para el parámetro manual de unión, en la mayoría de los casos,


sin la necesidad de manual de unión, el sistema entrará en datos escritos a mano en
la consulta
Cuando se utiliza el parámetro

automática de unión. Método

de enlace se utiliza como sigue:

// para realizar consultas


Db :: mesa ( 'think_user')
-> donde ( 'id', ': id')
-> donde ( 'nombre', ': nombre')
-> bind ([ 'id' => [10, \ PDO :: PARAM_INT], 'nombre' => 'ThinkPHP'])
-> seleccionar ();

// La gente solía escribir


Db :: mesa ( 'think_user')
-> bind ([ 'id' => [10, \ PDO :: PARAM_INT], 'email' => 'thinkphp@qq.com', 'nombre
'=>' th inkphp '])
-> donde ( 'id', ': id')
-> actualización ([ 'nombre' => ': nombre', 'email' => ': e-mail');

Utilice este - 248 -


documento en
viendo las nubes
construcción de
encaden
ando

tabique

Un método para una sub-tabla de nivel de partición de base

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

sintaxis SQL montado. método

de partición se utiliza como

sigue:

// La gente solía escribir


$ Datuna = [
'uSER_ID' => 1 1 0 ,
'nombre_usuario' =>
'Think'
];

$ 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);

// para realizar consultas


Db :: nombre ( 'log')
-> partición ([ 'user_id' = > 1 1 0 ] , " U s e r _ i d ", R e g l a $ )
-> donde ([ 'user_id' = > 1 1 0 ] )
-> seleccionar ();

Utilice este - 249 -


documento en
viendo las nubes
construcción de
encaden
ando

estri
cto
Un método de fijación estricta de verificación Yan Ke si el nombre de campo se
utiliza como sigue:

// Cierre la inspección estricta Campo


Db :: nombre ( 'usuario')
-> estricta (falso)
-> insertar ($ data);

Observe que el valor predeterminado del parámetro se determina por la fields_strict


configuración de base de datos, los parámetros de configuración de base de datos
pueden ser modificadas por lo
Yan Ke Para comprobar la configuración sigue globalmente:

// Cerrar el campo de inspección estricta está presente


'Fields_strict' => f a l s o ,

Si el campo se activa la comprobación Yan Ke, cuando se actualiza la base de


datos de la mano, una vez que la presencia de los valores de campo de tabla no
son de datos,
Se produce una excepción.

Utilice este - 250 -


documento en
viendo las nubes
construcción de
encaden
ando

failException

conjunto de datos de consulta failException está vacía, la necesidad de una


excepción, si no pasa ningún parámetro, de forma predeterminada
Kai, el método utilizado para seleccionar hallazgo mano, por ejemplo:

// De datos no existe, entonces se produce una excepción directamente


Db :: nombre ( 'blog')
-> donde ([ 'estatus' = > 1 ] )
-> failException ()
-> seleccionar ();
// Datos devuelve no existe una matriz vacía No arrojar una excepción
Db :: nombre ( 'blog')
-> donde ([ 'estatus' = > 1 ] )
-> failException (falso)
-> seleccionar ();

O puede utilizar error de comprobación en blanco más conveniente

// múltiples investigaciones
Db :: nombre ( 'blog')
-> donde ([ 'estatus' = > 1 ] )
-> selectOrFail ();

// Una sola consulta


Db :: nombre ( 'blog')
-> donde ([ 'estatus' = > 1 ] )
-> findOrFail ();

Utilice este - 250 -


documento en
viendo las nubes
construcción de
encaden
ando

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']);

Utilice este - 251 -


documento en
viendo las nubes
construcción de
consulta
de
funcion
es
agregad
as

consulta de funciones agregadas

edición función de ajuste


5.0.14 max mano min un método para aumentar el segundo
parámetro se utiliza para establecer si el reparto
En las aplicaciones
digitales que utilizamos a menudo Ll algunos datos estadísticos, por
ejemplo, (se cumplen ciertas condiciones o) todos los usuarios actuales, y el
Los usuarios tienen el máximo de puntos, la puntuación media del usuario, etc.,
ThinkPHP proporciona una serie de una función de métodos estadísticos para estas
operaciones, el prospecto:

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:

Obtiene el número de usuarios:

Db :: mesa ( 'think_user') -> count ();


// función de ayuda
db ( 'usuario') -> count ();

O en base a estadísticas de campo:

Db :: mesa ( 'think_user') -> count ( 'id');


// función de ayuda
db ( 'usuario') -> count ( 'id');

Los usuarios obtienen la mayor cantidad de puntos:

Db :: mesa ( 'think_user') -> max ( 'puntuación');


// función de ayuda
db ( 'usuario') -> max ( 'puntuación');

Utilice este - 252 -


documento en
viendo las nubes
construcción de
consulta
de
Obtiene los puntos de integración mínimos mayor que 0. en:
funcion
es
agregad
as

Utilice este - 253 -


documento en
viendo las nubes
construcción de
consulta
de
funcion
es
agregad
as
Db :: mesa ( 'think_user') -> donde ( 'puntuación> 0') -> min ( 'puntuación');
// función de ayuda
db ( 'usuario') -> donde ( 'puntuación> 0') -> min ( 'puntuación');

Obtener los usuarios del crédito promedio:

Db :: mesa ( 'think_user') -> avg ( 'puntuación');


// función de ayuda
db ( 'usuario') -> avg ( 'puntuación');

Estadísticas de usuario Puntuación total:

Db :: mesa ( 'think_user') -> suma ( 'puntuación');


// función de ayuda
db ( 'usuario') -> suma ( 'puntuación');

Utilice este - 254 -


documento en
viendo las nubes
construcción de
De la
consulta

De la consulta

comparación del tiempo


uso donde método
donde el apoyo método de comparación de tiempo, por ejemplo:

// Más de un cierto tiempo


donde ( 'CREATE_TIME', '> t i e m p o ' ' 0 1 . 0 1 .2 0 1 6 ' ) ;
// Menos de una hora determinada
donde ( 'CREATE_TIME', '<= t i e m p o ' ' 0 1 . 01 . 2 0 1 6 ' ) ;
// consulta intervalo de tiempo
donde ( 'CREATE_TIME', 'between t i e m p o ' [' 0 1 / 0 1 / 2 0 1 5 ' ' 0 1 / 0 1 / 2 0 1 6 ' ] ) ;

El tercer parámetro se puede pasar en cualquier expresión válida tiempo, reconocerá


automáticamente los tipos de campo de tiempo, el apoyo de las horas de clase
Tipo marcas de tiempo del prospecto de fecha y hora, la fecha, int mano.

uso whereTime método


whereTime método proporciona una forma rápida y fácil las manos de campo de
referencia de fecha y hora, los ejemplos son los siguientes:

// Más de un cierto tiempo


Db :: mesa ( 'think_user') -> whereTime ( '> =', ' 1 0 / 0 1 / 1 9 7 0 ' ) - >
'cumpleaños', seleccione
();
// Menos de una hora determinada '<', ' 1 0 / 0 1 / 2 0 0 0 ' ) ->
Db :: mesa ( 'think_user') -> whereTime ( seleccionar (
'cumpleaños',
);
// consulta intervalo de tiempo 'Entre', [ " 0 1 / 1 0 / 1 97 0 " ,
Db :: mesa ( 'think_user') -> whereTime (
'cumpleaños', 01/10/2000 ']) -> seleccione ();
// No en un intervalo de tiempo determinado '' No e n t r e " , [
Db :: mesa ( 'think_user') -> whereTime (
'cumpleaños', ', ' 0 1 /1 0 / 2 0 0 0 ' ] ) - > s e l e c c i o n e
"10/01/1970
tiempo expresión
();

También proporciona una forma más cómoda expresiones de consulta de tiempo,


tales como:

Utilice este - 255 -


documento en
viendo las nubes
construcción de
De la
consulta
// Obtener el blog de hoy
Db :: mesa ( 'think_blog') - > w h e r e T i m e ( ' C R E A T E _ T I M E ' , ' H o y ' ) - > s e l e c c i o n e
();
// Obtener el blog de ayer
Db :: mesa ( 'think_blog') -> whereTime ( 'CREATE_TIME', ' A y e r ' ) - > s e l e c c i o n e
();
// Obtener el blog de esta semana
Db :: mesa ( 'think_blog') -> whereTime ( 'CREATE_TIME', ' S e m a n a ') - > s e l e c c i o n e
();
// Obtener el blog de la semana pasada

Utilice este - 256 -


documento en
viendo las nubes
construcción de
De la
consulta

Db :: mesa ( 'think_blog') -> whereTime ( 'CREATE_TIME', ' L a s t s em a n a ' ) - >


seleccione ();
// Obtener el blog de este mes
Db :: mesa ( 'think_blog') -> whereTime ( 'Mes') -> seleccione
'CREATE_TIME', ();
// Obtener el blog del mes pasado 'Last m e s ' ) - >
Db :: mesa ( 'think_blog') -> whereTime ( seleccione ()
'CREATE_TIME',
;
// Obtener el blog de este año 'Año') -> seleccione ();
Db :: mesa ( 'think_blog') -> whereTime (
'CREATE_TIME', 'Last a ñ o ' ) - >
// Obtener el blog del año pasado seleccione ();
Db :: mesa ( 'think_blog') -> whereTime (
'CREATE_TIME',
Si la consulta ese día, semana, mes, año, hora lado, también se puede simplificar
como:

// Obtener el blog de hoy


Db :: mesa ( 'think_blog') -> whereTime ( 'D') -> seleccione
'CREATE_TIME', ();
// Obtener el blog de esta semana 'W') -> seleccione
Db :: mesa ( 'think_blog') -> whereTime ( ();
'CREATE_TIME',
// Obtener el blog de este mes 'M') -> seleccione
Db :: mesa ( 'think_blog') -> whereTime (
'CREATE_TIME', (); 'Y') - >
// Obtener el blog de este año
Db :: mesa ( 'think_blog') -> whereTime ( seleccionar ();
V5.0.5 + versión, también se puede utilizar el siguiente método para la
'CREATE_TIME',
investigación de tiempo

// Quepasa consultas dentro de las dos horas


Db :: mesa ( 'think_blog') -> whereTime ( 'CREATE_TIME', '-2 h o r as ) - > s e l e c t
();

Utilice este - 257 -


documento en
viendo las nubes
construcción de
Búsque
da
avanzad
a

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 ();

La consulta SQL generado es:

SELECT * F R OM , T h i nk _ u s e r , w h e r E ( , N o mb r e , L I K E ' T h i n k P H P % ' O R ,


T í t u l o , L I K E ' T h i n k P H P % ' ) A N D ( , C R E A TE _ T I M E , > 0 A N D , U P D A T E _ T I M E , > 0
) LIMIT 1

apoyo consulta rápida todas las expresiones de consulta.

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 ();

La sentencia SQL generado como sigue:

SELECT * F R OM , T h i nk _ u s e r , w h e r E ( , N o mb r e , L I K E ' T h i n k P H P % ' A N D ,


N o m b r e , L I K E ' % T h in k P H P ' ) A N D ( , I d , > 0 O R , I d , < > 1 0 ) L I M I T 1

Utilice este - 258 -


documento en
viendo las nubes
construcción de
Búsque
da Consulta consulta intervalo debe utilizar la definición de matriz, para apoyar a
avanzad
todos la expresión de consulta.
a

La siguiente consulta es incorrecta:

Utilice este - 259 -


documento en
viendo las nubes
construcción de
Búsque
da
avanzad
a

Db :: mesa ( 'think_user')
-> donde ( 'nombre', [ 'como', 'ThinkPHP%'], [ 'como', '% ThinkPHP'])
-> donde ( 'id', 5, [ '<>', 10], 'o')
-> find ();

consulta por lotes


condiciones discontinuas pueden ser definidos de consulta múltiples condiciones,
tales como:

Db :: mesa (
'think_user')
-> donde ([ [ 'Like', 'ThinkPHP%'],
'Nombre' [ 'Like', '%
=> 'Título' ThinkPHP'],
=> 'id' =>=>
'Estado' [ '>', 0],
]) 1
-> seleccionar
();

La sentencia SQL generado como sigue:

SELECT * F R OM , T h i nk _ u s e r , w h e r E , N o m b r e , L I K E ' T h i n k P H P % ' A N D , T í t u l o ,


C O M O ' % T h i n k P H P ' A N D , I d , > 0 A N D , E s ta d o , = ' 1 '

cierres de consulta
Db :: mesa ( 'think_user') -> seleccione (function ($ consulta)
$ Query-> donde ( 'nombre', 'ThinkPHP')
-> whereOr ( 'id', '>', 10);
});

La sentencia SQL generado como sigue:

SELECT * F R OM , T h i nk _ u s e r , w h e r E , N o m b r e , = ' T h i n k P H P ' O R , I d , > 1 0

Utilizar Query consulta de objeto


objetos de consulta se pueden envasar por adelantado, seleccionar y pasan métodos,
por ejemplo:

Utilice este - 260 -


documento en
viendo las nubes
construcción de
Búsque
da
$ Query = N e b r a s k a w \ P i e n s e \ d b \ c o n s u l t a s ;
avanzad
a $ Query-> nombre (
'usuario')
-> donde ( 'nombre', 'como', '% piensa%')
-> donde ( 'id', '>', 10)
-> límite (10); Db
:: seleccione ($
consulta);

Utilice este - 261 -


documento en
viendo las nubes
construcción de
Búsque
da
avanzad
a

Si utiliza el objeto de consulta, entonces cualquier invocación de operación de


la cadena antes de que el método de selección no son válidos.

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 ();

sentencia SQL generado es:

SELECT * F R OM , T h i nk _ u s e r , w h e r E ( , N o mb r e , L I K E ' T h i n k P H P % ' A N D ,


N o m b r e , L I K E ' % T h in k P H P ' ) A N D ( , I d , < 1 0 o r , I d , > 1 0 0 )

condición de cadena de consulta


Para algunas consultas muy complejas, también se puede utilizar sentencias SQL
nativas directamente consulta, por ejemplo:

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 ();

Por razones de seguridad, podemos utilizar un parámetro de cadena de consulta


condiciones, tales como la unión:

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 ();

V5.0.4 + Start, ThinkPHP admite varias llamadas a los mismos campos de


consulta, tales como:

Utilice este - 262 -


documento en
viendo las nubes
construcción de
Búsque
da
Db :: mesa ( 'think_user')
avanzad
a -> donde ( 'nombre', 'como', '% piensa%')
-> donde ( 'nombre', 'como', '% php%')
-> donde ( 'id', 'en', [1,5,80,50])
-> donde ( 'id', '>', 10)
-> find ();

Utilice este - 263 -


documento en
viendo las nubes
construcción de
Búsque
da
avanzad
a

acceso directo ( v5.0.5 + )


V5.0.5 + versión iniciaron una nueva manera rápida serie para simplificar la
consulta, prospecto:

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

Utilice este - 264 -


documento en
viendo las nubes
construcción de
vista
consulta

vista consulta

Ver consulta se puede conseguir no depender de vista de base de datos de consultas


de múltiples mesas, la base de datos no tiene que soportar una vista, por ejemplo:

Db :: vista ( 'Usuario', "id, nombre)


-> view ( 'Perfil', 'verdadero nombre, teléfono, correo electrónico',
'Profile.user_id = User.id')
-> ver ( 'puntuación', 'puntuación', 'Score.user_id = Profile.id')
-> donde ( 'puntuación', '>', 80)
-> seleccionar ();

sentencia SQL generada tiene el siguiente aspecto:

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

campo sin la necesidad de añadir el nombre de la

tabla. Por defecto combinación interna consulta, si es

necesario cambiar, puede utilizar:

Db :: vista ( 'Usuario', "id, nombre)


-> view ( 'Perfil', 'verdadero nombre, teléfono, correo electrónico',
'Profile.user_id = User.id', 'LE
FT ')
-> ver ( 'puntuación', 'puntuación', 'Score.user_id = Profile.id',
'derecho')
-> donde ( 'puntuación', '>', 80)
-> seleccionar ();
sentencia SQL generada tiene el siguiente aspecto:

Utilice este - 260 -


documento en
viendo las nubes
construcción de
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 ,
P r o f i l e . e m a i l , r e . s c o r S c o e F R O M t h i n k _ u s e r u s o r L E F T J O I N th i n k _ p r o f i l e
Profile ON Perfil. User_id = User.id RIGHT JOIN think_socre SCORe ON
Score.user_id = Profile.id WherE Score.score > 80

Se puede utilizar un alias:

Db :: vista ( 'Usuario', [ 'id' => 'uid', 'nombre' => 'cuenta'])

Utilice este - 260 -


documento en
viendo las nubes
construcción de
vista
consulta

-> view ( 'Perfil', 'verdadero nombre, teléfono, correo electrónico',


'Profile.user_id = User.id')
-> ver ( 'puntuación', 'puntuación', 'Score.user_id = Profile.id')
-> donde ( 'puntuación', '>', 80)
-> seleccionar ();

sentencia SQL generada se convierte en:

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 ();

sentencia SQL generada se convierte en:

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

Utilice este - 261 -


documento en
viendo las nubes
construcción de
subco
nsulta
s

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:

$ SubQuery = D b : : me s a ( ' t h i n k _ u s e r ' )


-> campo ( 'id, nombre)
-> donde ( 'id', '>', 10)
-> seleccionar (false);

Los resultados generados subconsulta:

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

2, utilizando fetchSql método


Método fetchSql significa que no hay instrucciones de consulta SQL que devuelven
acaba de construir, y no sólo apoyo seleccionar, pero el apoyo Todas las consultas de
cuajada.

$ SubQuery = D b : : me s a ( ' t h i n k _ u s e r ' )


-> campo ( 'id, nombre)
-> donde ( 'id', '>', 10)
-> fetchSql (verdadero)
-> seleccionar ();

Los resultados generados subconsulta:

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

Utilice este - 262 -


documento en
viendo las nubes
construcción de
subco
nsulta
s
3, usando buildSql
consulta constructor
$ SubQuery = D b : : me s a ( ' t h i n k _ u s e r ' )
-> campo ( 'id, nombre)
-> donde ( 'id', '>', 10)
-> BuildSQL ();

Los resultados generados subconsulta:

Utilice este - 263 -


documento en
viendo las nubes
construcción de
subco
nsulta
s

( SELECT , Id ,,, nombre, FROM , Think_user, wherE , Id, > 10 )

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:

Db :: mesa ($ subconsulta.' a ' )


-> donde ( 'a.name', 'como', 'ThinkPHP')
-> orden ( 'id', 'desc')
-> seleccionar ();

La sentencia SQL generado como sigue:

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

4, el cierre el uso de subconsultas configurado


EN / NO en la mano existe / NO existe este tipo de consultas se pueden
usar directamente como un cierre subconsulta, por ejemplo:

Db :: mesa ( 'think_user')
-> donde ( 'id', 'EN', function ($ consulta)
$ Query-> Mesa ( 'think_profile') -> donde ( 'status', 1) -> campo ( 'id');
})
-> seleccionar ();

sentencia SQL generado es

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 )

Utilice este - 264 -


documento en
viendo las nubes
construcción de
subco
nsulta
s Db :: mesa ( 'think_user')
-> donde (function ($ consulta)
$ Query-> Mesa ( 'think_profile') -> donde ( 'status', 1);
}, 'Existe')
-> find ();

Utilice este - 265 -


documento en
viendo las nubes
construcción de
subco
nsulta
s

La sentencia SQL generada

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 )

V5.0.9 + versión, la operación de comparación también es compatible con el uso


de la indagación bollos cerrada

Utilice este - 266 -


documento en
viendo las nubes
construcción de
Las
consulta
s nativas

Las consultas nativas

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:

Db :: query ( "Select * l a d o a o t r o m t h i n k _ u s e r R C E s t e e s t a d o = 1 " ) ;

Si está utilizando actualmente una base de datos distribuida, y configura la venta


de escribir palabras separadas, método de consulta es siempre en la venta de
servicios
Realiza, por lo tanto, consultar el método correspondiente están vendiendo
operación, independientemente de lo que la instrucción SQL Sí.

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:

Db :: execute ( "update t h i n k _ u s e r S E t n o m b r a r T h i n k P H P = ' ' R C E s t e e s t a d o = 1


");

Si está utilizando actualmente una base de datos distribuida, y establecer un


separadas palabras escritas vender, ejecutar método es siempre escribiendo
servicio
Servicio realiza, por lo ejecute el método correspondiente es una operación de
escritura, y no importa lo que la instrucción SQL Sí.
Utilice este - 267 -
documento en
viendo las nubes
construcción de
Las
consulta
s nativas
enlace de parámetros
Cuando nativa soporta enlaces de parámetros de consulta, prospecto o el nombre de
marcador de posición del marcador de posición signo de interrogación, por ejemplo:

Db :: query ( "Select * l a d o a o t r o m t h i n k _ u s e r R C E s t e i d = ? A N D e s t a d o = " ,


[8,1]) ?;
// vinculación llamada
Db :: execute ( "update t h i n k _ u s e r S E t n a m e = : n a m e R C E s t e e s t a d o = :
status", [ 'nam e' => 'ThinkPHP', 'status' => 1]);

Utilice este - 268 -


documento en
viendo las nubes
construcción de
Las
consulta
s nativas

Utilice este - 269 -


documento en
viendo las nubes
construcción de
consulta
de
eventos

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

Consultas :: evento ( 'after_insert', 'callback');


consulta :: evento ( 'before_select', function ($ options,
$ consulta)
// Procesamiento de eventos
return $ R e s u l t a d o ;
});

Utilice este - 270 -


documento en
viendo las nubes
construcción de
operaci
ones
transacc
ionales

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.

El método de funcionamiento utilizando la transacción de base de datos de

transacciones, cuando anomalía se produce automáticamente deshace, por

ejemplo: las transacciones de control automático

Db :: transacción (function () db :: mesa (


'think_user') -> find (1); db :: mesa (
'think_user') -> delete (1);
});

También puede controlar manualmente las transacciones, tales como:

// 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 ();
}

Tenga en cuenta que en el momento de las operaciones de transacción, asegúrese


de que su conexión a la base es la misma.

Utilice este - 271 -


documento en
viendo las nubes
construcción de
SQL
monitor

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:

Db :: escuchar (function ($ sql, $ T i e m p o , E x p l i c a r $ )


// registroSQL
echo $ s q l . ' [ ' . . $ T i m e ] ' ;
// análisis de vista del rendimiento
dump ($ explicar);
});

Si no está registrado ningún defecto operaciones escuchar, éstos ejecución de SQL


será Ll registro, dependiendo del tipo de registros
En.

Utilice este - 272 -


documento en
viendo las nubes
construcción de
Procedi
mientos
almacen
ados

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:

$ Result = D b : : q u er y ( ' c a l l s p _ q u e r y ( 8 ) ' ) ;

Devuelve una matriz de dos dimensiones, puede utilizar el enlace de parámetros,


tales como:

$ Result = D b : : q u er y ( ' c a l l s p _ q u e r y ' , [ 8 ] ) ( ? ) ;


// O el nombre de la unión
$ Result = D b : : q u er y ( ' c a l l s p _ q u e r y ( : i d ) ' [ ' i d ' = > 8 ] ) ;

Utilice este - 270 -


documento en
viendo las nubes
construcción de
conju
nto
de
datos

conjunto de datos

edició función de ajuste


n
5.0.5 Nativo de consultas no admite
devolver objeto conjunto de
resultados base de datos es bajo el conjunto de datos, la configuración por defecto,
datos
el tipo de conjunto de datos es una matriz de dos dimensiones, podemos
datos de la clase SET está configurado, el conjunto de datos pueden apoyar más la
operación objetos, parámetros resultset_type conjunto de datos requerido función
basada, la base de datos se puede configurar son los siguientes:

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'

El objetivo conjunto de datos se devuelve pensar \ Collection, ofrece una gran


variedad de uso de la indiferencia parte, y además encapsulado
Estos métodos adicionales. Matriz puede ser

utilizado como el conjunto de datos de objeto modo

de funcionamiento, por ejemplo:

Utilice este - 271 -


documento en
viendo las nubes
construcción de
conju
nto
de // La obtención de un conjunto de datos
$ usuarios = D b : : no m b r e ( ' u s u a r i o ' ) - > s e l e c c i o n e ( ) ;
datos
// La operación directa del primer elemento
$ Item = $ U s e r s [ 0 ] ;
// Obtener el número de conjuntos de datos de grabación
$ Count = ( c o n t a r l os u s u a r i o s $ ) ;

Utilice este - 272 -


documento en
viendo las nubes
construcción de
conju
nto
de
datos

// A través del conjunto de datos


foreach ($ usuarios un a s $
Usuario) echo $
Usuario [ 'nombre'];
echo $ Usuario [
'id'];
}
Tenga en cuenta que, si se quiere juzgar si el conjunto de datos está vacío, depósito
vacío no se puede utilizar directamente, sino que debe utilizar los datos
método IsEmpty de determinar el conjunto de objetos, por ejemplo:

$ usuarios = D b : : no m b r e (
'usuario') -> seleccione (); if ($
usuarios-> estaVacia ())
echo 'conjunto de datos está vacía';
}

clase de colección contiene los siguientes métodos principales:

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

filtro llamada de los


Filtrado de datos
datos con una función de
columna devolución
Devuelve losdedatos
elementos
de columna
especie Ordenar los datos
barajada malestar de datos
rebanada Interceptar la parte de datos del

Utilice este - 273 -


documento en
viendo las nubes
construcción de
conju
nto
de
datos

Utilice este - 274 -


documento en
viendo las nubes
construcción de
base de
datos
distribuida

base de datos distribuida

ThinkPHP soporte incorporado para bases de datos distribuidas, prospecto primaria a


escribir separada de la venta de la base de datos, sino que se distribuye la base de
datos Será el mismo tipo de base de datos.

1 puede usarse para configurar database.deploy apoyo base de datos


distribuida. Si de manera distribuida base de datos, información de configuración
de base de datos se define como sigue:

//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'

El número depende del número de conexiones de base de datos el nombre de host


definido, incluso si los dos son la misma IP también dado a repetir
Justicia, pero en realidad su argumento, si está presente, no puede repetir la misma
definición, por ejemplo:

'HostPort' => '3306,3306'

mano

'HostPort' => '3306'

Equivalente.
Utilice este - 275 -
documento en
viendo las nubes
construcción de
base de
datos
distribuida
'Nombre de usuario'
=> 'usuario1',
'password' => 'pwd1',

Utilice este - 276 -


documento en
viendo las nubes
construcción de
base de
datos
distribuida

mano

'Nombre de usuario' =>


'usuario1, usuario1',
'password' => 'pwd1, pwd1',

Equivalente.

También puede configurar una base de datos distribuida de si vender escribir


separación, por defecto no vende escribir separación, es decir, cada servidor puede
escribir para vender, los principales términos de la base de datos, tiene que escribir
venta conjunto separado, la siguiente los ajustes pueden ser:

'Rw_separate' = > v e rd a d e r a ,

En el caso de la venta de la escritura independiente, la configuración predeterminada


es la primera información de configuración de base de datos para el servidor primario
es responsable de la grabación de datos, si
Master_num parámetros establecidos, puede soportar múltiples servidor maestro
escribe. E es la verdadera información de configuración de la base de datos, es
responsable de vender el acceso a los datos, el número no está limitado. Cada
conexión al vender operación de extracción, el sistema al azar desde el servidor yEn
la selección del servidor.

También puede establecer slave_no especificar un servidor para la venta de la

operación. Si el error de conexión de la base de datos, la base de datos principal

cambiará automáticamente Ll está conectado.

CUAJADA invocación de operación del modelo, el sistema determinará


automáticamente el método de ejecución actualmente la venta o escritura, si está
utilizando SQL nativo, es necesario prestar atención a las reglas predeterminadas
del sistema: Las operaciones de escritura deben ejecutar la operación modelo de
venta debe modelo con un método de consulta, donde la principal de la venta o
escribir ocurrirá trastorno.

Utilice este - 277 -


documento en
viendo las nubes
construcción de
base de
datos
Nota: síncrono
distribuida
marco que no trabaja para los datos de la base de datos, la base de
datos debe tener en cuenta su propio mecanismo de sincronización o replicación.

Utilice este - 278 -


documento en
viendo las nubes
construcción de
mo
delo

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:

Totalmente acceso de tipo de objeto


Soporte de llamadas
estático (consulta)
apoya campo de marca
de tiempo extractora /
modificador de venta
se escribe
automáticamente
Objetos / matriz de
acceso JSON modelo
serialización
activadores de eventos
Con cambio
automático de datos
de rango llamado
validación mano
consulta
autocompletar
asocia con precarga
/ asociado
operativamente

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.

Utilice este - 279 -


documento en
viendo las nubes
construcción de
defi
nici
one
s

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 \

index \ modelo; nosotrose

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 \

index \ modelo; nosotrose

pensar \ Modelo;

class u s o r a m p l i a r s m o d e l o

protected $ P k = ' U id ' ;


}
Utilizar las tablas de datos nombre prefijo de tabla modelo de datos, se elimina clase
de modelo tabla de reglas de nomenclatura, la designación de método joroba,
La primera letra en mayúscula, como por ejemplo:

nombre Convenios tabla de datos correspondientes


del
usuario (suponiendo
pensar usuarioque la base de datos se define
modelo prefijo piensan)
UserType pensar en el tipo de usuario

Si su mano por encima de las normas no cumplen con el sistema acordado, es


necesario establecer la clase de nombre de la tabla Modelo para asegurar la
propiedad
Ll es posible encontrar la tabla de datos correspondiente.
Utilice este - 280 -
documento en
viendo las nubes
construcción de
defi
nici
Hoja de Datos de Configuración
one
s
Si desea especificar una tabla de datos o incluso una conexión de base de datos,
puede utilizar:

Utilice este - 281 -


documento en
viendo las nubes
construcción de
defi
nici
one
s

aplicación de espacio de nombres \ index \ modelo;

Usuario clase extiende \ pensar \ Modelo

// Establece la hoja de datos completa de corriente correspondiente al nombre del modelo


$ Protegida tabla = 'think_user';

// Establecer la conexión a la base del modelo actual


protected $ conexión = [
// Tipo de base de datos
'Tipo' => 'MySQL',
// Dirección del servidor
'Nombre de host' => '127.0.0.1',
// nombre de la base
'Base de datos' => 'ThinkPHP',
// Nombre de usuario de base de datos
'Nombre de usuario' => 'Raíz',
// base de datos de contraseña
'Contraseña' => ''
// Base de datos de
codificación por
defectoutf8 'Juego de
caracteres' => 'Utf8',
// prefijo de la tabla de base de datos
'Prefijo' => 'Think_',
// el modo de depuración de base de datos
'Depuración' => falso,
];
}

Parámetros como conexión mano a la base de datos, el valor del atributo de la


conexión también se pueden proporcionar para la base de datos de parámetro de
configuración, y
El funcionario también recomendó maneras de evitar el curado en el código de

conexión de base de datos en el interior. 5.0 no es compatible con la corriente de

prefijo de tabla modelo proporcionado por separado.

llamadas modelo
Clase puede utilizar los llamados modelos estáticos o instanciados llamada de dos
maneras, por ejemplo:

Utilice este - 282 -


documento en
viendo las nubes
construcción de
defi
nici
one// Invocación estática
s $ usor = U s u a r i o : : g e t ( 1 ) ;
$ Usuario-> name = ' T hi n k P H P ' ;
$ Usuario-> save ();

// Los ejemplos de modelo


$ usor = N e b r a s k aw us u a r i o ;
$ Usuario-> nombre= ' Th i n k P H P ' ;
$ Usuario-> save ();

// uso Loader se crea una instancia de clase (singleton)


$ usor = C a r g a d o r : : m o d e l o ( ' U s u a r i o ' ) ;

Utilice este - 283 -


documento en
viendo las nubes
construcción de
defi
nici
one
s

// O utilizar la función de ayuda, Modelo,


$ usor = m o d e l o ( ' Us u a r i o ' ) ;
$ Usuario-> nombre= ' Th i n k P H P ' ;
$ Usuario-> save ();

modelo de instancias de clase se utiliza principalmente para adaptar el modelo de


llamada de método, el uso de más capítulos más tarde de referencia.

Utilice este - 284 -


documento en
viendo las nubes
construcción de
modelo
de
inicializaci
ón

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 \

index \ modelo; nosotrose

pensar \ Modelo;

class i n d e x a m p l i a r s m o d e l o

//La inicialización personalizada


protected f u n c i o n i ni c i a l i z a r ( )

//Tenga que llamar, Modelo,de,


Inicializar,método parent ::
initialize ();
// TODO:La inicialización personalizada
}
También se puede utilizar el método init estática hay que señalar que init ejecuta
}

sólo la primera instanciación tiempo, y


Nota especificación llamadas dentro de un método estático, de la siguiente manera:

namespace a p l i c a c i ón \

index \ modelo; nosotrose

pensar \ Modelo;

class i n d e x a m p l i a r s m o d e l o

//La inicialización personalizada


protected S t a t i c f u nc i o n i n i t ( )

// TODO:La inicialización personalizada


}
}

Utilice este - 280 -


documento en
viendo las nubes
construcción de
nue
vo

nuevo

Hay varias formas de añadir datos.

Añadir piezas de datos


El primer tipo es la asignación y se guarda objetos instanciados modelo:

$ 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 ();

O los datos entrantes directamente instanciados

$ 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:

Utilice este - 281 -


documento en
viendo las nubes
construcción de
nue
vo
$ usor = N e b r a s k aw Us u a r i o ( $ _ P O S T ) ;
// P O S tSólo la matriznombreye-mailLos campos se escriben en
$ Usuario-> allowField ([ 'nombre', 'email']) -> save ();

Utilice este - 282 -


documento en
viendo las nubes
construcción de
nue
vo

Nuevos datos ahorran método devuelve el número de registros escritos.

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

Utilice este - 283 -


documento en
viendo las nubes
construcción de
nue
vo
$ usor = N e b r a s k aw us u a r i o ;
$ List = [
[ 'Nombre' => 'ThinkPHP', 'email' => 'thinkphp@qq.com'],
[ 'Nombre' => 'onethink', 'email' => 'onethink@qq.com']
];

Utilice este - 284 -


documento en
viendo las nubes
construcción de
nue
vo

$ Usuario-> saveAll (lista $);

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

// usomodeloAyuda función de instanciasusuariomodelo


$ usor = m o d e l o ( ' Us u a r i o ' ) ;
// asignación de objetos Modelo
$ Usuario-> datos ([
'Nombre' => 'ThinkPHP', 'e-
mail' = > 'Thinkphp@qq.com'
]);

Utilice este - 286 -


documento en
viendo las nubes
construcción de
nue
vo

$ Usuario-> save
();

O dar volumen:

$ usor = m o d e l o ( ' Us u a r i o ' ) ;


// nuevo lote
$ List = [
[ 'Nombre' => 'ThinkPHP', 'email' => 'thinkphp@qq.com'],
[ 'Nombre' => 'onethink', 'email' => 'onethink@qq.com']
];
$ Usuario-> saveAll (lista $);

Utilice este - 287 -


documento en
viendo las nubes
construcción de
actu
aliz
ació
n

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 ();

datos de actualización directa


Pueden ser actualizados directamente con los datos de estado de actualización

$ 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 ] ) ;

Utilice este - 288 -


documento en
viendo las nubes
construcción de
actu
datos de actualización por lotes
aliz
ació
n
El método se puede utilizar datos de actualización por lotes SaveAll, por ejemplo:

Utilice este - 289 -


documento en
viendo las nubes
construcción de
actu
aliz
ació
n

$ 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 $);

La actualización masiva única actualizado valores de clave principal, por favor


utilice la actualización foreach recorrido genuina E.

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 ' ] ) ;

Si los datos de entrada contiene la actualización de la clave primaria, puede


que no necesite utilizar el método de dónde.

Utilice este - 290 -


documento en
viendo las nubes
construcción de
actu
aliz
método estático
ació
n
Modelo es compatible con los métodos estáticos actualizar directamente los datos,
por ejemplo:

Usuario :: donde ( 'id', 1 )


-> actualización ([ 'nombre' = > ' T h i n k P H P ' ] ) ;

Utilice este - 291 -


documento en
viendo las nubes
construcción de
actu
aliz
ació
n

O usar:

Usuario :: actualización ([ 'id' = > 1 , ' N o m b r e ' = > ' T h i n k P H P ' ] ) ;

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.

Llamar al método Save representa un nuevo modelo de instancia;


Después de llamar al método Save indica que los
datos de actualización de consulta; Método de salvar
entrante indica que las condiciones de actualización
después de la actualización;

Si los datos son operaciones más complejas, se puede especificar explícitamente la


llamada actual Guardar método es nuevo en funcionamiento la operación o
actualización.

Explícita de actualización de datos:

// Los ejemplos de modelo


$ usor = N e b r a s k aw us u a r i o ;
// Operaciones especifican explícitamente los datos de actualización
$ Usuario-> isUpdate (verdadero)
-> save ([ 'id' = > 1 , ' No m b r e ' = > ' T h i n k P H P ' ] ) ;

Utilice este - 292 -


documento en
viendo las nubes
construcción de
actu
aliz
Además explícita de datos:
ació
n
$ usor = U s u a r i o : : g e t ( 1 ) ;
$ Usuario-> name = ' T hi n k P H P ' ;
// Especificar explícitamente las nuevas operaciones para la operación actual
$ Usuario-> isUpdate (falso) -> save ();

Utilice este - 293 -


documento en
viendo las nubes
construcción de
actu
aliz
ació
n

Tenga cuidado de no hacer en un ejemplo modelo de que se actualiza varias veces,


dará lugar a una duplicación de datos no está actualizada, de la manera correcta
debe
O utilice el método de actualización para actualizar la clase de modelo después de la
primera consulta de actualización.

Si se llama al método muchas veces los datos de almacenamiento se haya escrito


cuando la necesidad de prestar atención, cuando el segundo método debe guardar
Utilice isUpdate (falso), de lo contrario será considerado para actualizar los datos.

Utilice este - 294 -


documento en
viendo las nubes
construcción de
borr
ar

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 ();

Eliminar de acuerdo a la clave primaria


O llamar al método estático directamente

Usuario :: destroy (1);


// hornada de la ayuda eliminar varios datos
Usuario :: destroy ( '1,2,3');
// o
Usuario :: destruir ([1,2,3]);

V5.0.9 versión + destruir método comienza cuando un nulo entrante (paquete de


cadena vacía insertar mano vacía matriz) no va a hacer cualquier momento
¿Qué datos operación de borrado, pero el pase es válido 0

Eliminación
Usar una matriz borrar condiciones, tales como:

// borrar estado0los datos


Usuario :: destroy ([ 'estatus' = > 0 ] ) ;

También es compatible con el uso de cierres para eliminar, tales como:

Usuario :: destroy (function ($ consulta)


$ Query-> donde ( 'id', '>', 10);
});

Utilice este - 295 -


documento en
viendo las nubes
construcción de
borr
ar
O eliminar una consulta de base de datos por categoría

Utilice este - 296 -


documento en
viendo las nubes
construcción de
borr
ar

Usuario :: donde ( 'id', '>', 10) -> delete ();

Utilice este - 290 -


documento en
viendo las nubes
construcción de
inve
stig
ació
n

investigación

La obtención de un único datos


La adquisición de un solo método de interpolación paquete de datos:

Quitar la clave principal de1los datos


$ usor = U s u a r i o : :
get (1); echo $
Usuario-> nombre;

// El uso de matrices de investigación


$ usor = U s u a r i o : : g e t ( [ ' n o m b r e ' = > ' T h i n k P H P ' ] ) ;

// Utilice una investigación de cierre


$ usor = U s u a r i o : : g e t ( f u n c t i o n ( $ c o n s u l t a )
$ Query-> donde ( 'nombre', ' T h i n k P H P ' ) ;
});
echo $ U s u a r i o - > n o mb r e ;

Si se encuentra en un modelo interno, por favor no utilice $ This-> name La


forma de obtener los datos, el uso
$ This-> getAttr ( 'nombre') generaciones Moss.
O llame al método de consulta a partir del modelo de instancias

$ 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 ();

método GET o de búsqueda devuelve la instancia actual del modelo de objeto, el


modelo puede ser utilizado métodos.

Obtener más datos


edició Novedades
n
5.0.4 entorno de apoyo en el modelo resultSetType
Devuelve el nombre del conjunto de datos de objetos
Retire la pluralidad de datos:

Utilice este - 291 -


documento en
viendo las nubes
construcción de
inve
stig
// La adquisición de una pluralidad de datos sobre la base de la clave primaria
ació
n $ List = U s u a r i o : : t o d a s ( ' 1 , 2 , 3 ' ) ;
// O utilizar una matriz

Utilice este - 292 -


documento en
viendo las nubes
construcción de
inve
stig
ació
n

$ 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;
}

diferencia Mano matriz de datos de modo de realización, la consulta de cierre que


consulta puede definir una forma de matriz, formas de cierre
Apoyar la operación más consistente, el paquete de

ordenación por inserción, las restricciones cuantitativas.

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 ();

El método o seleccionar todo método modelo devuelve una matriz


bidimensional que comprende un conjuntos de datos de modelo de objetos o
Al igual.

conjunto de objetos de datos personalizados


V5.0.4 + versión, soporta el objeto nombre devuelto para consultar conjuntos de
datos en un único modelo (el valor predeterminado es el número de
Group), por ejemplo:

Utilice este - 293 -


documento en
viendo las nubes
construcción de
inve
stig
<? Php
ació
n namespace a p p \ i n d ex \ 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

// Establecer para volver nombre de objeto de conjunto de datos


protected $ R e s u l t S et T y p e = ' C o l e c c i ó n ' ;
}

Utilice este - 294 -


documento en
viendo las nubes
construcción de
inve
stig
ació
n

Si el campo está vacío resultSetType utilizado como el conjunto de datos de


matriz tipo de retorno, si el conjunto de la colección
Indicación pensar \ Colección como el nombre del objeto de retorno, también se
puede establecer el conjunto de datos el nombre de los objetos personalizados
(utilizando las definiciones de espacio de nombres completos).

Obtiene el valor de un campo o una columna


// Obtener un usuario puntos
Usuario :: donde ( 'id', 10) -> valor ( 'puntuación');
// Obtiene todos los valores de una columna
Donde usuario :: ( 'status', 1) -> columna ( 'nombre');
// conidentificaciónel índice
Donde usuario :: ( 'status', 1) -> columna ( 'nombre', 'id'); usuario
:: donde ( 'status', 1) -> columna ( 'id, nombre); / /
conTP3degetField

método Nota valor de columna mano devuelve una instancia de objeto ya no


es un modelo, sino simplemente un valor o
Una matriz de columnas.

consulta dinámica
Apoyar los métodos de consulta dinámica, tales como:

// segúnnombrecampo de consulta de usuario


$ usor = U s u a r i o : : g e t B y N a m e ( ' T h i n k P H P ' ) ;

// segúne-mailcampo de consulta de usuario


$ usor = Usuario :: getByEmail ('thinkphp@qq.com ');

consulta consulta por categoría


O una más complejas consultas utilizando consultar una base de datos:

Usuario :: donde ( 'id', '>', 10) ->


seleccione (); usuario :: donde ( 'nombre',
'ThinkPHP') -> find ();

método de encadenamiento se puede utilizar directamente en la base de datos


para todos los modelos.

Consulta devuelve los resultados correspondientes al modelo actual del objeto o

Utilice este - 295 -


documento en
viendo las nubes
construcción de
inve
stig
conjunto de datos contiene el objeto del modelo.
ació
n
El procesamiento por lotes de datos
Modelo también puede apoyar datos devueltos por el proceso por lotes, que es útil
cuando se trata de grandes cantidades de datos, tales como:

Utilice este - 296 -


documento en
viendo las nubes
construcción de
inve
stig
ació
n

:: trozo de usuario (100, función ($


usuarios) foreach ($ usuarios
unas El usuario $)
// procesousuarioObject Model
}
});

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é.

$ usor = U s u a r i o : : g e t ( 1 ' ' , t r u e ) ;


$ List = U s u a r i o : : t o d a s ( ' 1 , 2 , 3 ' , ' ' , t r u e ) ;

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é.

Utilice este - 297 -


documento en
viendo las nubes
construcción de
agr
ega
ción

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:

Usuario :: count (); usuario :: donde (


'status', '>', 0) -> count (); usuario ::
donde ( 'status', 1) -> avg ( 'puntuación');
Usuario: : max ( 'puntuación');

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');

Utilice este - 298 -


documento en
viendo las nubes
construcción de
adquir
idor

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 $ )

$ Status = [ = - 1 > 'borrar', 0 =>'inhabilitar'1 =>'normal'2


=>'pendiente']; Return $ E s t a d o [ v a l o r $ ] ;
}
}

Una tabla de datos de campo se convierte automáticamente a método joroba,


como el valor del campo de estado de tipo numérico, podemos obtener
Tome definición convierte automáticamente en una cadena de descripción.

$ 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 )

$ Status = [ = - 1 > 'borrar', 0 =>'inhabilitar'1 =>'normal'2


=>'pendiente']; Return $ E s t a d o [ $ d a t a [ ' s t a t u s ' ] ] ;
}
}

método adquirente del segundo parámetro se pasa a todas matriz de datos actual.

Utilice este - 299 -


documento en
viendo las nubes
construcción de
adquir
idor
Podemos utilizar directamente el valor del campo de texto de estado, tales como:

Utilice este - 300 -


documento en
viendo las nubes
construcción de
adquir
idor

$ 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"

Adquirente solamente se activa automáticamente, si desea obtener todos los datos


adquiridos incluyen el procesamiento de los datos en la adquisición de una
propiedad cuando
Atributo, puede utilizar el siguiente método:

$ usor = U s u a r i o : : g e t ( 1 ) ;
// Obtener todos los datos adquiridos
dump ($ usuario-> toArray ());

Para obtener los datos originales


Si se define el caso de un adquirente, con la esperanza de una hoja de datos de los
datos originales, puede utilizar:

$ 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 ());

Utilice este - 301 -


documento en
viendo las nubes
construcción de
modifi
cador

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 ) ;
}
}

El siguiente código se almacena en la base de datos cuando Ll será convertido a


minúsculas

$ 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

Pueden ser ensamblados en una secuencia de campos:

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 ) ;
}
}

El método de segundo parámetro modificador se pasa automáticamente a todos


matriz de datos actual.

Edición por lotes


Utilice este - 302 -
documento en
viendo las nubes
construcción de
modifi
cador
A excepción de la asignación de formas de activar el modificador, el siguiente
método también se puede utilizar para desencadenar un modificador de lote:

$ usor = N e b r a s k aw Us u a r i o ( ) ;

Utilice este - 303 -


documento en
viendo las nubes
construcción de
modifi
cador

$ Datos [ 'nombre'] = 'T h i n k P H P ' ;


$ Datos [ 'email'] = 'Thinkphp@qq.com';
$ Usuario-> de datos (datos $, t r u e ) ;
$ Usuario-> save ();
echo $ U s u a r i o - > n o mb r e ; / / T h i n k P H P

Guardar método o directamente a través de un disparador, por ejemplo:

$ 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

Utilice este - 304 -


documento en
viendo las nubes
construcción de
Marca
de
tiemp
o

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.

La primera forma, es añadir la configuración global en el fichero de configuración de


base de datos:

// Abierta escrita automáticamente en el campo de marca de tiempo


'Auto_timestamp' = > v e r d a d e r a ,

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 ;

Si estos dos lugares se establece en true, el valor predeterminado es reconocido


como un int tipo entero, si su campo de tiempo no es un int
Si, por ejemplo, el tipo de fecha y hora, que se puede configurar:

// Abierta escrita automáticamente en el campo de marca de tiempo


'Auto_timestamp' = > ' F e c h a y h o r a ' ,

protected $ A u t o W r i te T i m e s t a m p = ' D a t e t i m e ' ;

Nombre del campo es creado por CREATE_TIME tiempo predeterminado, el


tiempo de actualización update_time campo, palabra de apoyo
Paquete Tipo de inserción del segmento de marca de hora / fecha y hora /

Utilice este - 300 -


documento en
viendo las nubes
construcción de
Marca
de
int.
tiemp
o
Al escribir datos, el sistema automáticamente escrito campo update_time
CREATE_TIME parte, sin la necesidad de modificar la definición, por ejemplo:

Utilice este - 300 -


documento en
viendo las nubes
construcción de
Marca
de
tiemp
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 _ 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

v5.0.5+ Versión, cuando el campo de tiempo de salida será automáticamente


la conversión Ke, si no quieren automáticamente el tipo de Ke de la producción,
se puede poner el fichero de configuración de base de datos datetime_format
el valor del parámetro a False (
Si no La compatibilidad
está la tabla
V5.0.6+ de datos por de versiones,
defecto la versión
el valor anterior
del campo, se puedepuede
la búsqueda utilizarser
para desactivar
definido de acuerdo lacon
conversión automática
la siguiente manera:de tipos Ke tipo de forma)

class u s o r a m p l i a r s m o d e l o

// Se define el nombre del campo de marca de tiempo


protected $ C r e a t e T im e =
'Create_at'; protected $ UpdateTime
= 'Update_at';
}

Aquí está la salida del campo de código modificado:

$ 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

Si sólo necesita utilizar CREATE_TIME campo sin la necesidad de escribir de forma


automática update_time, se puede establecer una separada
Set para cerrar un campo, por ejemplo:

class u s o r a m p l i a r s m o d e l o

// Escribe gente de la automáticaupdate_timecampo


protected $ U p d a t e T im e = f a l s a ;
}

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

// La gente escribe desactivar la impresión automática de la hora

Utilice este - 302 -


documento en
viendo las nubes
construcción de
Marca
de
tiemp
o

protected $ A u t o W r i te T i m e s t a m p =
} falsa;

Si es el momento de cerrar la escritura automotriz mundial, se puede utilizar:

// Global Auto cerró la gente escribe campo de hora


'Auto_timestamp' = > f a l s o ,

Utilice este - 303 -


documento en
viendo las nubes
construcción de
La venta
único
campo

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 \

index \ modelo; nosotrose

pensar \ Modelo;

class u s o r a m p l i a r s m o d e l o

protected $ R e a d o n l y = [ ' N o m b r e ' , ' e m a i l ' ] ;


}
Por ejemplo, la definición anterior del nombre de campo de correo electrónico
del modelo actual para vender parte de campo, no se les permite ser cambiado.
que
Antes de actualizar método realizado vender de forma automática campo

de valor filtrado delantero, LL evitar la actualización de la base de datos.

Para los siguientes ejemplos:

$ 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 ();

De hecho, ya que sólo se venden valor, solamente frente a los campos de


nombre de campo es más manos de correo electrónico
El nuevo, mientras que el valor del nombre antes que la mano sigue siendo de
correo electrónico o el valor actualizado.

Utilice este - 304 -


documento en
viendo las nubes
construcción de
suave
borrar

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.

Para utilizar la función de eliminación suave, el rasgo s SoftDelete, por ejemplo,


según el modelo de la búsqueda de usuarios siguiente definición suave Eliminar
función se puede utilizar:

namespace a p l i c a c i ón \

index \ modelo; nosotrose

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 ' ;
}

5.0.2 Las versiones anteriores deleteTime La propiedad debe ser utilizado


Static Definiciones.
deleteTime atributo se utiliza para definir el campo de indicador de
eliminación suave, ThinkPHP5 función suave de eliminación utilizando las
marcas de tiempo
Tipo (las tablas de datos valor predeterminado nulo), el tiempo para borrar los

datos de registro. Se puede especificar el tipo de campos suave de borrado

con la conversión de tipos, tablas de datos se recomienda para todos los tipos

Utilice este - 305 -


documento en
viendo las nubes
construcción de
suave
borrar
de campo de la hora del sistema.

Después de que el modelo se ha definido, podemos utilizar:

// 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

Utilice este - 306 -


documento en
viendo las nubes
construcción de
suave
borrar

$ Usuario-> delete (true);

Por defecto, consulta de datos no contiene los datos eliminados temporalmente, si


los datos debe incluir suave eliminado, puede utilizar las siguientes partes
Tipo de consulta:

Usuario :: withTrashed () -> find


(); usuario :: withTrashed () ->
seleccione ();

Si sólo necesita consultar los datos eliminados temporalmente, puede utilizar:

Usuario :: onlyTrashed () -> find


(); usuario :: onlyTrashed () ->
seleccione ();

Si su modelo define base Subyacente consulta, asegúrese de agregar la consulta


base eliminado temporalmente.

Utilice este - 307 -


documento en
viendo las nubes
construcción de
tipo de
conversi
ón

tipo de conversión

campo de apoyo se ajusta al tipo de conversión automática, la conversión de tipos


será procesada automáticamente al empezar a vender a tomar el tiempo para
escribir, por ejemplo:

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.

Utilice este - 308 -


documento en
viendo las nubes
construcción de
tipo de
boolean
conversi
ón
Elovalor de este campo es para empezar a escribir cuando la salida se convierte
automáticamente a booleano.

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

Utilice este - 309 -


documento en
viendo las nubes
construcción de
tipo de
conversi
ón

Biblioteca, cuando se toma fuera decodificado de forma automática.

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:

Utilice este - 310 -


documento en
viendo las nubes
construcción de
tipo de
conversi
ón class u s o r a m p l i a r s
modelo
protected $ = [
Tipo => 'Integer',
'Estado' => 'Float', 'marca de
'puntuació => tiempo: Y / m /
n' d',
} 'cumpleaño
s'
];
A continuación, puede

$ usor = U s u a r i o : : f i n d ( 1 ) ;

Utilice este - 311 -


documento en
viendo las nubes
construcción de
tipo de
conversi
ón

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.

Utilice este - 312 -


documento en
viendo las nubes
construcción de
Los
datos
complet
os

Los datos completos

Los datos grabados en la base de datos significa automáticamente después de que el


valor del campo es tratado sin la necesidad de asignación manual.

El sistema es compatible con la actualización automática mano, insertar tres


atributos, respectivamente, en forma escrita, la nueva actualización de tiempo
en la mano Mecanismo de campo automáticamente las líneas, atributo contiene
Auto nueva mano actualizar automáticamente el funcionamiento, por ejemplo, la
clase del modelo de usuario se definen los siguientes:

namespace a p l i c a c i ón \

index \ modelo; nosotrose

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

Cuando la operación de almacenamiento, se asignará automáticamente el campo IP.

Utilice este - 313 -


documento en
viendo las nubes
construcción de
Los
datos
complet
os
$ usor = U s u a r i o : : f i n d ( 1 ) ;
$ 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-> ip;
// 127.0.0.1

Los desarrolladores necesitan para ordenar modificador "Autocompletar y M" M


relación.

Utilice este - 314 -


documento en
viendo las nubes
construcción de
Los
datos
complet
os

Utilice este - 310 -


documento en
viendo las nubes
construcción de
su
búsque
da

su búsqueda

Puede consultar el modelo en funcionamiento escrito a mano encapsulado, por


ejemplo:

namespace a p l i c a c i ón \

index \ modelo; nosotrose

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 )

$ Query-> donde ( 'nombre', 'ThinkPHP') -> campo ( 'id, nombre');


}

protected f u n c i o n s co p e A g e ( $ c o n s u l t a )

$ Query-> donde ( 'edad', '>', 20) -> límite (10);


}

}
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 ();

Se puede utilizar directamente consultar la función de cierre, por ejemplo:

Usuario :: alcance (function ($ consulta)


$ Query-> donde ( 'edad', '>', 20) -> límite (10);
}) -> seleccione ();

Los parámetros de compatibilidad:

Utilice este - 311 -


documento en
viendo las nubes
construcción de
su
búsque
da namespace a p l i c a c i ón \

index \ modelo; nosotrose

pensar \ Modelo;

Utilice este - 312 -


documento en
viendo las nubes
construcción de
su
búsque
da

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 )

$ Query-> donde ( 'edad', '>', $ lowest_age) -> límite (10);


}
}

Usuario :: alcance ( 'ageAbove', 2 0 ) - > s el e c c i o n e ( ) ;

el alcance del nombre sólo puede ser ageAbove AgeAbove joroba no es


compatible con edad por encima

Apoyar la invocación dinámica de la forma, como por ejemplo:

$ 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 ();

método coherente de la operación no puede ser llamado antes de que un


método de consulta rango con nombre, primero debe ser llamado. Si usted lo
llama un verdadero método de consulta cadena detrás de su método de
gama global
búsqueda, depuede
sólo se consultas
utilizar buscar o seleccionar consulta.
Si todas sus consultas requieren una consulta basada en la gama, se puede definir
una clase dentro de un modelo estático
método de base, por ejemplo:

namespace a p l i c a c i ón \

index \ modelo; nosotrose

pensar \ Modelo;

class u s o r a m p l i a r s m o d e l o

// Definir el alcance mundial de la investigación


protected f u n c i o n b as e ( $ c o n s u l t a )

$ Query-> donde ( 'status', 1);


}
Utilice
} este - 313 -
documento en
viendo las nubes
construcción de
su
búsque
da

Búsqueda global cualquier método debe definirse antes de la versión 5.0.2es


Static Método estático.
A continuación, el siguiente código:

$ usor = U s u a r i o : : g e t ( 1 ) ;

La consulta final será

status = 1 A N D y o d = 1

Si necesita convertir dinámicamente encendido / apagado el acceso global de


consultas, puede utilizar:

// Cerrar gama global de consultas


Usuario :: useGlobalScope (falso) -> get (1);
// Abrir gama global de consultas
Usuario :: useGlobalScope (verdadero) -> get (2);

Utilice este - 314 -


documento en
viendo las nubes
construcción de
modelo
jerárqui
co

modelo jerárquico

ThinkPHP apoya el modelo jerárquico, además de la capa de modelo, tenemos que


diseñar páginas objetivo crear un verdadero modelo a su capa de mano.

Por lo general, diferente modelo jerárquico sigue \ Piense \ clase de modelo o


subclase hereda el sistema real, es realmente el funcionamiento básico del operador
de la clase de modelo es consistente.

Por ejemplo, en el módulo de índice de diseño necesidad de distinguir entre las


diferentes capas de la capa de datos modelo, una capa lógica, una capa de servicio,
etc., podemos crear un modelo, directorio de servicios mano módulo lógico bajo el
directorio, el funcionamiento de todos los modelos de tablas de usuario dividido en
tres capas:

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

Tres modelo de capa se define

como sigue: app \ index \

modelo \ User.php

namespace a p l i c a c i ón \

index \ modelo; nosotrose

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')

Utilice este - 315 -


documento en
viendo las nubes
construcción de
modelo
jerárqui
categorías lógicas: app \ index \ lógica \ User.php
co

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

Utilice este - 316 -


documento en
viendo las nubes
construcción de
modelo
jerárqui
co

Ejemplos de métodos: \ pensar \ cargadora :: modelo ( 'Usuario', 'lógica');

Categoría de servicio: app \ index \ servicio \ User.php

namespace a p l i c a c i ón \ i n d e x

\ servicio; nosotrose 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', 'servicio');

Utilice este - 317 -


documento en
viendo las nubes
construcción de

You might also like