Introducción al PHP (Parte 13: La inclusión de archivos)

 En numerosas ocasiones la tarea (o tareas) que debe realizarse mediante guiones de PHP requiere más de un archivo con este tipo de lenguaje de guiones (o que sea de otro tipo pero que realice la tarea necesaria).
  Obviamente, al emplearse varios archivos de PHP, hace necesario un modo de que unos interactúen con otros.
  Por lo tanto, el archivo de PHP necesita tener una instrucción que ordene la inclusión de otro archivo, la cual suele ser include(), aunque existen otras variantes.
  Este mecanismo de inclusión permite al usuario definir archivos de código que después se pueden emplear repetidamente en muchos programas actuando como si fuesen librerías, lo que permite ahorrar tiempo y errores, simplificando el mantenimiento.


SENTENCIA INCLUDE()

  Esta sentencia incluye y ejecuta el fichero indicado. La sentencia tiene la siguiente sintaxis:
include ('<nombre del archivo>');
 

  Donde "nombre del archivo" es el nombre del archivo que se pretende incluir. El archivo se buscará con base en la ruta de acceso dada o, si no es dada, en la lista de directorios indicados en la directiva de configuración "include_path". Si el archivo no se encuentra en el "include_path", include finalmente verificará en el propio directorio del guión que hace la llamada y en el directorio de trabajo actual, antes de fallar. Si se define una ruta, bien sea absoluta (comenzando con una letra de unidad o "\"  en Windows o "/" en Unix/Linux) o relativa al directorio actual (comenzando con "." o ".."), el "include_path" será ignorado por completo.
  El nombre del archivo puede ser una dirección URL de un archivo remoto, para esto hay que habilitar la directiva "allow_url_fopen" del archivo de configuración "php.ini" del XAMPP (o la directiva apropiada según el archivo de configuración del programa que se esté utilizando para interpretarel PHP).
  El código que proviene del archivo incluido hereda las variables del ámbito donde se llama a la sentencia include(). Toda variable disponible en línea donde se usa a sentencia include() también estará disponible para el código proveniente del archivo de inclusión. En contrapartida, las variables definidas en el archivo de inclusión se pueden utilizar posteriormente en el programa que hizo la inclusión como si fuesen escritas en el propio programa que hace la misma. Obviamente, siguen rigiendo las consideraciones de las variables locales; si en el archivo de inclusión aparece una función que define variables locales, estas no serán visibles fuera de esa función.
  Si esta sentencia se utiliza dentro de una función cualquiera del programa que realiza la llamada, todo el código del archivo de inclusión se comportará como si se definiera dentro de la mencionada función.
  Cuando PHP se encuentra con una instrucción con la sentencia include() abandona el modo PHP para pasar al modo HTML, lo que significa que si el archivo de inclusión contiene código PHP debe comenzar nuevamente con el indicador "<?php" y finalizar con "?>" (o sus equivalentes), ya que de ese modo se regresa al modo PHP y se vuelve a activar el intérprete.
  Se debe tener en cuenta que en los archivos de inclusión se continúan cumpliendo las mismas reglas de ámbito de variables que en el archivo que hace la llamada.
  Puesto que tanto include() como require() son constructores especiales del lenguaje, cuando se utilizan dentro de estructuras de bucle o de control se deben codificar entre llaves, aunque sea la única sentencia, ya que, en caso contrario, puede generar errores. Por la misma razón, los paréntesis no son necesarios en torno a su argumento.
  Es posible ejecutar una sentencia return dentro de un archivo incluido para terminar el procesamiento del mismo y volver al archivo de comandos que lo llamó. También es posible devolver valores de los archivos incluidos. Se puede coger el valor de la llamada include como se haría con una función normal.



SENTENCIA REQUIRE()

  La sentencia require() funciona de manera similar que la sentencia anterior. No obstante,  Con esta sentencia existe una única diferencia significativa: si el archivo de inclusión referenciado por la sentencia no puede encontrarse en la ruta de acceso especificada se obtendrá un mensaje de "Error Fatal" (normalmente en inglés) y se detendrá toda ejecución; en cambio, con la sentencia include() sólamente aparecerá una advertencia y el código se seguirá ejecutando a partir de la instrucción siguiente a la sentencia include().
  Dada la similitud entre ambas funciones, todo lo explicado para la sentencia anterior es válido para esta.



SENTENCIA INCLUDE_ONCE()

  Esta sentencia es similar a la sentencia include() excepto en que con la sentencia include_once() si el código ya se incluyó una vez, no se volverá a incluir. La primera vez que PHP se encuentra con la sentencia include_once() de un archivo determinado, lo cargará y lo evaluará normalmente, pero a partir de ahí ya no se volverá a cargar (como si no existiera la llamada a la sentencia).
  Include_once() debería usarse en los casos en los que, un mismo fichero pueda ser incluido y ejecutado más de una vez durante la ejecución de un guión, y si quiere estar seguro que se incluya una sola vez para evitar problemas con redifiniciones de funciones, variables, asignación a variables, etc.
  Por otra parte, una segunda llamada a esta sentencia no produciría ni la carga ni la evaluación del archivo referenciado.



SENTENCIA REQUIRE_ONCE()

  La sentencia require_once() es parecida a la sentencia require() salvo que con la sentencia require_once() si el código ya se incluyó una vez, no se volverá a incluir. La primera vez que PHP se encuentra con esta sentencia de un archivo determinado, lo cargará y lo evaluará normalmente, pero a partir de ese instante ya no se volverá a cargar (como si no existiera la llamada a la sentencia).
  Las consideraciones citadas para include_once() se extienden para la sentencia require_once().
  Por otra parte,  el comportamiento de include_once() y require_once() puede no ser el esperado en sistemas operativos en los que las mayúsculas y minúsculas se traten igual (como en Windows).


  Aguardo que esta entrada haya sido del gusto del lector. Si ese es el caso, espero que este la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.