Diferencias entre include, require, include_once y require_once


en general las 4 funciones hacen lo mismo, importar en un documento php, funciones o variables de otros documentos escritos en php o html
esto resulta muy util y practico a la hora de dividir y organizar nuestro codigo
pongo un caso, imaginen una funcion que se ejecuta en 4 ficheros php, para poder utilizar la misma funcion esta tendria que estar escrita en cada uno de los ficheros

¿inconvenientes?
  1. si queremos modificar la funcion, tenemos que cambiar cada una de los ficheros donde este escrita
  2. tenemos mas trabajo y necesitamos mas tiempo a la hora de modificar cada uno de los ficheros
  3. mas dificil de mantener
  4. mas codigo
  5. mas espacio ocupado
solucion:
creamos un fichero llamado por ejemplo general.php con las funciones que necesitamos y añadimos un include a cada uno de los ficheros
luego para modificar la funcion solo tenemos que editar el fichero general.php
ejemplo de include:
fichero1.php
PHP:
  1. include 'fichero2.php';//$variable es igual a 10
  2. echo $variable;//imprime 10
fichero2.php
PHP:
  1. $variable = 10;
si ejecutamos el fichero1.php, mostrara por pantalla el valor de la variable $variable, 10
la diferencia entre require e include, es que si el fichero no existe:
  • include mostrara un warning y continuara con la ejecucion
  • require mostrara un fatal error y parara la ejecucion
ejemplo de include_once:
fichero1.php
PHP:
  1. include_once("fichero2.php")//$variable es igual a 10
  2. $variable = 20//$variable es igual a 20
  3. include_once("fichero2.php")//$variable es igual a 20
  4. echo $variable//imprime 20
fichero2.php
PHP:
  1. $variable = 10
si ejecutamos fichero1.php, mostrara por pantalla 20

¿porque 20 y no 10?

tanto include_once como require_once solo se pueden ejecutar una vez
la segunda vez que se llama a include_once, esta es como si no existiera.
si en vez de utilizar include_once, utilizamos include o require el valor final de $variable seria 10
include se comporta igual que include_once, a la hora de importar el fichero, si este no existe mostrara warning y continuara la ejecucion
lo mismo passa con require y require_once, si el fichero no existe muestra un fatal error y para la ejecucion
algunas anotaciones:
  • vigila a la hora de hacer mas de un include con ficheros que contengan funciones
    si importas un fichero que ya ha sido incluido antes o que contenga alguna funcion declarada anteriormente, aparacera un Fatal error y la ejecucion terminara, ya que no se puede declarar la misma funcion 2 veces
  • si quieres importar ficheros con solo variables, no tendras problemas para llamarlo mas de una vez (solo con include y require)
  • utiliza require o require_once, para cargar archivos de configuracion, que contengan constantes
  • puedes hacer un fichero php que contenga una plantilla html de un mensaje de foro y hacer un include a este fichero dentro de un while o for, ojo con include_once no lo puedes hacer
  • si el fichero que quieres incluir esta escrito en php, este debe tener encima del codigo <?php y al final ?>, si es codigo html no hace falta

No hay comentarios:

Publicar un comentario