Menú
Está libre
registro
hogar  /  Firmware/ ¿Cuál es más correcto de usar: requerir o incluir? PHP php requiere una vez incluir la descripción de las construcciones.

¿Cuál es más correcto de usar, exigir o incluir? PHP php requiere una vez incluir la descripción de las construcciones.

Hacer código de programa más legible, puede, por ejemplo, poner las definiciones de funciones y / o clases en un archivo separado. Hay cuatro instrucciones de idioma que permiten a PHP conectar archivos:

  • incluir
  • exigir
  • include_once
  • requerir una vez

Las cuatro instrucciones pueden tomar un nombre de archivo local como parámetro. Las declaraciones include y require son muy similares en acción y difieren solo en la reacción a la imposibilidad de obtener el recurso solicitado. Por ejemplo, si el recurso no está disponible, include e include_once muestra una advertencia e intenta continuar ejecutando el programa. require y require_once detenga el procesamiento de esta página si el recurso solicitado no está disponible.

incluir

La declaración de inclusión le permite incluir y adjuntar otros scripts a su script PHP. Cuando se inicia el programa, el intérprete simplemente reemplazará la instrucción con el contenido del archivo incluido. Veamos cómo funciona, cree un archivo llamado add.php y escriba dentro:

Ahora creemos otro archivo y asígnele el nombre, por ejemplo, test.php, en el que incluimos el archivo add.php:

\ $ var2 = $ var2 "?>

Como puede ver en el ejemplo, la declaración de inclusión agrega el contenido del archivo incluido, gracias a lo cual su programa obtiene acceso a otras variables, funciones, clases, etc.

Nota: puede asignar cualquier nombre a los archivos incluidos, pero siempre agregue la extensión .php, porque si usa una extensión diferente, los atacantes pueden solicitar su archivo y el servidor web devolverá su texto. Este es un riesgo de seguridad porque las contraseñas o la forma en que funciona su programa pueden verse comprometidas, dando una escapatoria a los atacantes. Para evitar que esto suceda, los archivos de inclusión deben ser procesados ​​por el intérprete de PHP.

Conexión dentro de una función

Si el archivo está incluido dentro de una función, entonces todo el código contenido en el archivo de inclusión se comportará como si estuviera definido dentro de esta función, es decir, el código tendrá alcance local. Reescribamos un poco el ejemplo anterior:

Ahora agreguemos una función a test.php:

En el ámbito global: $ var1 ";?>

Dado que dentro de la función declaramos que la variable $ var1 es global, también está disponible en el ámbito global.

La ruta al archivo

Los archivos se incluyen según la ruta especificada al archivo, si no se especifica la ruta, la ruta especificada en la directiva include_path (en archivo de configuración php.ini). Si el archivo no se encuentra en la ruta especificada en include_path, la declaración de inclusión intentará verificar el directorio de trabajo actual en el que se encuentra la secuencia de comandos del archivo de inclusión; si la estructura de inclusión no puede encontrar el archivo, se emitirá una advertencia.

Si se especifica la ruta, sin importar qué: absoluta o relativa (relativa al directorio actual donde se encuentra el script incluido), se ignorará la directiva include_path.

include_once

El comportamiento de include_once es idéntico al de la declaración de inclusión, con la única diferencia de que si el código del archivo ya se ha incluido una vez, no se incluirá ni se volverá a ejecutar. Esto evita el problema de anular funciones, variables, etc. Para entender mejor cómo funciona esto, demos un ejemplo:

Intentemos ejecutar el siguiente código en test.php:

Esto dará como resultado un mensaje de error porque las funciones no se pueden anular. Para evitar errores de este tipo, debe utilizar la instrucción include_once. Reescribamos el código en el archivo test.php:

require y require_once

Las declaraciones require y require_once funcionan de manera idéntica para include e include_once con una excepción. Si no se encuentra el archivo de inclusión, la ejecución del script se detendrá, mientras que include e include_once muestran una advertencia y continúan con la ejecución del script.

Sugerencia: intente abandonar por completo el uso de include y require, use sus contrapartes con el sufijo _once. Esto hará que sea más fácil dividir grandes y programa complejo en módulos relativamente independientes.

El requiere incluir construir

Diseño exigir le permite incluir archivos en el script Ejecución PHP Secuencia de comandos PHP. Sintaxis general exigir tal:

requiere nombre de archivo;

Al inicio (¡exactamente al inicio, no en la ejecución!) Del programa, el intérprete simplemente reemplazará la instrucción con el contenido del nombre del archivo (este archivo también puede contener un script PHP, enmarcado, como de costumbre, con etiquetas y ?> ). Además, hará esto inmediatamente antes de iniciar el programa (a diferencia del que se analiza a continuación). Esto puede resultar muy útil para incluir varias páginas de plantilla en código HTML en la salida del script. Pongamos un ejemplo:

Archivo Header.html:

Es un titulo

Archivo Footer.html:
Compañía de origen, 2005.

Archivo Script.php
requiere "header.htm";
// El script genera el cuerpo del documento en sí
requiere "footer.htm";
?>

Así, la construcción exigir le permite crear scripts PHP a partir de varios archivos individuales que puede ser como html-páginas y php-guiones.

Diseño exigir admite inclusiones archivos borrados(desde PHP 4.3.0). Por ejemplo:

// El siguiente ejemplo no funciona porque intenta incluir un archivo local
requiere "file.php? foo = 1 & bar = 2";
// El siguiente ejemplo funciona
exigir;
?>

! Diseño exigir le permite incluir archivos remotos, si esta opción está habilitada en la configuración Archivo PHP. información detallada.

Incluye archivos remotos

PHP le permite trabajar con objetos URL como archivos normales. Los empaquetadores predeterminados se utilizan para trabajar con archivos remotos utilizando protocolo ftp o http.

Si se incluyen "envoltorios de URL fopen" en PHP (como en la configuración predeterminada), puede especificar el archivo que se incluirá mediante una URL (a través de HTTP) en lugar de una ruta local. Si el servidor de destino interpreta el archivo de destino como código PHP, las variables se pueden pasar al archivo de inclusión mediante una cadena de consulta de URL, como en HTTP GET. Estrictamente hablando, esto no es lo mismo que incluir un archivo y heredar el alcance variable del archivo principal; porque la secuencia de comandos se ejecuta en un servidor remoto y el resultado se conecta a la secuencia de comandos local.

Para que la inclusión remota de archivos esté disponible, debe establecer en el archivo de configuración (php.ini) allow_url_fopen = 1.

Nota: Las versiones de PHP para Windows anteriores a PHP 4.3.0 no admiten la capacidad de usar archivos remotos con esta función, incluso si la opción allow_url_fopen está habilitada.


/ * Esto supone que www.example.com está configurado para parse.php
* archivos, no archivos .txt. También "Funciona" aquí significa que las variables
* $ foo y $ bar están disponibles en el archivo incluido. * /

// No funcionará ya que www.example.com no está procesando file.txt como PHP
incluir "http://www.example.com/file.txt?foo=1&bar=2";

// No funcionará porque está buscando el archivo "file.php? Foo = 1 & bar = 2" en el local
// sistema de archivos.
incluir "file.php? foo = 1 & bar = 2";

// El siguiente ejemplo funciona:
incluir "http://www.example.com/file.php?foo=1&bar=2";

$ foo = 1;
$ barra = 2;
incluir "file.txt"; // Obras
incluir "file.php"; // Obras

?>

Diseños de página

13.22. Requerir declaración ()

El principio de la instrucción require () es similar a la directiva del preprocesador #include () en el lenguaje de programación C ++. Si está familiarizado con este lenguaje, entonces dominar los siguientes operadores no será difícil para usted, sin embargo, incluso si no está familiarizado, intentaremos describir con más detalle los principios de estos operadores. La instrucción require () reemplaza, llama al contenido de los archivos, cuya ruta y nombre se especificaron en el bloque de instrucciones:

require ("ruta / nombrearchivo.html");

Si los parámetros de URL de PHP fopen_wrapper_SB están configurados como habilitados (generalmente predeterminado), entonces también puede especificar el archivo en una declaración require () usando la URL (Localizador uniforme de recursos) en lugar de usar la ruta local al archivo requerido en require ( ) declaración. Por ejemplo:

$ url = http: //my_new_adress/index.phtml;

La instrucción require () no es una función. Lo más probable es que se le pueda llamar una construcción del lenguaje. ¿Por qué no podemos pensar en este operador como una función?

Require () no está subordinado a ninguna estructura de control;

Require () no devuelve ningún valor, que a su vez hace la función.

Un intento de llamar a cualquier valor de la instrucción require () resultará en un error e interrumpirá la ejecución del programa.

A diferencia de include, require siempre lee la línea de dirección del archivo, incluso cuando no se ejecuta. Si necesita incluir condicionalmente un archivo, use la instrucción include (). Las expresiones simplemente condicionales no se consideran efectivas cuando se trabaja con la instrucción require, sin embargo, si no se ejecuta la línea en la que se encuentra la instrucción requre, no se ejecutará ni una sola línea de código en el archivo en esta dirección. Esto es lógico, ya que es el acceso al archivo en este caso que se realiza a través del operador require ().

Las estructuras de ejecución del ciclo no afectan el modo de funcionamiento de la instrucción require (), aunque el código contenido en el archivo final todavía está subordinado al ciclo. De esto podemos concluir que la instrucción require se ejecuta solo una vez, en contraste con include ().

Por lo tanto / no puede poner la instrucción require () con todas las instrucciones adjuntas en el bloque de instrucción de bucle y esperar a que ese mismo bucle se ejecute de manera diferente este operador en cada iteración. Para aprovechar esto, le sugerimos que utilice la declaración include ().

Cuando se ejecuta un archivo con una instrucción require (), el cbd contenido hereda las capacidades variables de la línea en la que se ejecuta requre (). Cualquier variable disponible en esta línea estará disponible dentro del archivo llamado. Si la instrucción require está dentro de una función dentro del archivo de llamada, entonces todo el código contenido en el archivo llamado se comportará como si estuviera definido dentro de este.

En el caso de que la instrucción require () funcione con un archivo que se llama a través de HTTP y usa envoltorios fopen, y si la dirección de la estación interpreta el archivo final como código PHP, entonces, en este caso, las variables se pueden pasar al require () declaración utilizando la URL -request como método HTTP Get. No es lo mismo. que la llamada al archivo de declaración require, ya que el script prácticamente continúa la ejecución del script en el servidor remoto, y los resultados luego se incluirán en el script local:

/ * no funcionará porque no fue procesado por el servidor * /

require ("http: //my_domain_name/file.txt? varone = 1 & vartwo = 2");

/ * no funciona porque el nombre del archivo es "file.php? varone = 1 & vartwo = 2"

enfocado en local sistema de archivos */

require ("file.php? varone = 1 & vartwo = 2");

/ * funcionará sin errores * /

require ("http: //my_domain_name/test.php? varone = 1Svartwo = 2");

require ("archivo.txt");

require ("archivo.php");

Estos ejemplos le ayudarán a comprender claramente las formas de utilizar el operador require (), así como a evitar errores al crear programas. A continuación, veremos la declaración include (), similar a la declaración require (), y los principios básicos de su funcionamiento.

operador. La inclusión se puede realizar de cualquiera de las siguientes formas:

incluir "nombre de archivo"; incluir $ nombre_archivo; incluir ("nombre de archivo");

Ejemplo 3.9... Deje que el archivo params.inc almacene un conjunto de algunos parámetros y funciones. Cada vez que necesitemos usar estos parámetros (funciones), insertaremos el comando include ("params.inc") en el texto de nuestro programa principal.

Params.incinclude.php"; // muestra" ¡Hola, Vasya! "echo" Hoy es $ hoy "; // muestra, por ejemplo," Hoy es 07.07.05 "?> Ejemplo 3.9. Usando la declaración de inclusión

Tenga en cuenta que el uso del operador incluir es equivalente a simplemente pegar el contenido del archivo params.inc en su código include.php. ¿Quizás entonces fue posible escribir texto simple en params.inc sin ninguna etiqueta que indique que se trata de código php? ¡Está prohibido! El caso es que en el momento de insertar el archivo, cambiar del modo Procesamiento PHP en modo HTML. Por lo tanto, el código dentro del archivo de inclusión que necesita ser procesado como un script PHP debe estar envuelto en las etiquetas apropiadas.

La búsqueda de un archivo para insertar se realiza de acuerdo con las siguientes reglas.

  1. El archivo se busca primero en include_path relativo al directorio de trabajo actual.
  2. Si no se encuentra el archivo, la búsqueda se realiza en include_path relativo al directorio del script actual.
  3. Parámetro include_path, definido en el archivo de configuración de PHP, especifica los nombres de los directorios en los que buscar incluir archivos.

Por ejemplo tu include_path este es . (es decir directorio actual), el directorio de trabajo actual es / www /. En su archivo principal include.php, incluye el archivo my_dir / a.php, que a su vez incluye b.php. Luego, el analizador busca primero el archivo b.php en el directorio / www /, y si no hay ninguno, entonces en el directorio / www / my_dir /.

Si el archivo se incluye con incluir, entonces el código contenido en él hereda el alcance de las variables de cadena donde el incluir... Cualquier variable del archivo llamado estará disponible en el archivo de llamada a partir de esta línea. En consecuencia, si incluir aparece dentro de la función del archivo de llamada, entonces el código contenido en el archivo llamado se comportará como si estuviera definido dentro de la función. Por tanto, heredará el alcance de esta función. Aunque todavía no nos hemos familiarizado con el concepto de función, presentamos esta información aquí con la expectativa de una comprensión intuitiva de la misma.

Ejemplo 3.10... Deje que el archivo para insertar params.inc permanezca igual e include.php sea el siguiente:

"; $ str. =" La página fue creada por $ user "; echo" $ str ";) Footer (); // llamar a la función Footer (). Get: // Today: 07/08/05 // The La página fue creada por Vasya echo "$ usuario, $ hoy"; // mostrará una coma, ya que // estas variables son visibles solo // dentro de la función?> Ejemplo 3.10. Alcance al usar incluir

Además de los archivos locales, el uso incluir Los archivos externos también se pueden incluir especificando sus URL. Esta oportunidad controlado por la directiva url_fopen_wrappers en el archivo de configuración de PHP y generalmente está habilitado por defecto. Pero en Versiones PHP para Windows anterior a PHP 4.3.0, esta función no es compatible en absoluto, independientemente de url_fopen_wrappers.

include () es una construcción de lenguaje especial y debe ir entre llaves cuando se usa dentro de bloques condicionales.

Ejemplo 3.11. Usando include ()

Utilizando incluir Hay dos tipos de errores posibles: un error de inserción (por ejemplo, el archivo especificado no se puede encontrar, el comando de inserción en sí está escrito incorrectamente, etc.) o un error de ejecución (si el error está contenido en el archivo que se va a insertar). En cualquier caso, si hay un error en el comando

Como sabes, PHP tiene 4 funciones para incluir otros archivos. eso incluir, include_once, exigir y requerir una vez... ¿En qué se diferencian y cómo utilizarlos correctamente?

Primero, veamos la diferencia entre incluir y exigir... Estas dos funciones difieren solo en su reacción a la ausencia de un archivo de inclusión. Función incluir("Habilitar") en ausencia el archivo especificado dará un mensaje de error como E_WARNING, pero la ejecución del programa continuará. A diferencia de ella, exigir("Requerir") en ausencia de un archivo de inclusión, emite un error fatal (E_ERROR), que conduce a la terminación inmediata del script que se está ejecutando.

Por lo tanto, en función del conocimiento de cómo se ejecuta su código, puede usar uno u otro operador. Por ejemplo, si esto es solo un fragmento de HTML que generalmente no afecta el curso del programa, o si se trata de algunos complementos menores, sin los cuales el resto del programa puede funcionar normalmente, no dude en usar incluir... En otros casos, recomiendo usar exigir... Esto evitará la posibilidad de una ejecución incorrecta del código y, en caso de error (por ejemplo, el archivo de inclusión fue eliminado por un virus o se perdió durante el proceso de desarrollo), simplemente terminará el script. En un artículo futuro, le mostraré cómo rastrear absolutamente todo. situaciones no estándar en el código y manténgase al tanto de lo que sucede dentro del sitio.

Ahora consideremos las construcciones. include_once y requerir una vez... De simple incluir y exigir se distinguen por la terminación "_once", que evita que se vuelvan a insertar los mismos archivos.

Por ejemplo, si su archivo de inclusión contiene descripciones de clases o funciones, entonces dicho archivo no se puede volver a incluir, ya que se volverá a ejecutar y PHP generará un error fatal al intentar definir clases o funciones con nombres existentes. No hay duda de que puede diseñar su código de tal manera que la reconexión nunca ocurra, pero se trata de restricciones innecesarias y trabajo adicional. Por lo tanto, las funciones con el sufijo "_once" son útiles y necesarias.

En mi práctica, utilizo dos tipos de archivos. El primer tipo son archivos que contienen una o más clases y no contienen código que se pueda ejecutar "directamente". Siempre conecto esos archivos usando requerir una vez... El segundo tipo son plantillas o fragmentos de plantilla que contienen HTML y algo de código PHP. Conecto tales archivos usando exigir porque a veces la misma pieza de plantilla se puede usar varias veces en la página.

Yo nunca uso incluir y include_once porque considero la ausencia de un archivo, que debería ser, una situación crítica que requiere una solución inmediata sin ningún compromiso. Y si necesito incluir un archivo, cuya existencia está en duda, primero verifico su existencia usando is_file ().

Hay un truco más al usar include. A pesar de que, de hecho, esto no es una función, sino una construcción de lenguaje, el operador trabaja dentro del archivo incluido regreso... Y, por lo tanto, include devuelve este valor al código llamado. Se parece a esto

$ ret = incluir "archivo.php";

Eso es todo por hoy, programe correctamente!