gafeman viciao2k3 logo viciao2k3
 
¿que estoy haciendo?   follow me
@fillito emplado del mes, producto del año jeje
 chica del dia  —  la novia de tu mejor amigo
 
Suscribete →  
450  fans y una planta carnivora
 
Estás en: Viciao2k32007JunioMartes 26
4

diferencias entre include, require, include_once y require_once

Tag: PHP    Por: gafeman    Lecturas: 2551   

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
  •  3  comentarios   —   2552  visitas
  •  1  pings   —   0  trackbacks
 
Pings
  1. http://www.darkrassel.com/unos-cuantos-enlaces/

Trackbacks
  1. No hay trackbacks
    • gravatarWifii   
    • 28/7/2007   
    • Actividad   

    Me ha parecido una buena explicación pero estos dias tengo un problema con los includes, no tiene mucho a ver con esto pero lo explico aver si le ves una solucion.


    Mira, tengo una pagina principal donde la cabezera es un include (cabecera.php).


    Dentro de esa cabecera hay otro include, donde tengo la barra de navegacion, (barra.php).


    Como es de suponer solo me sale el primer include al ejecutar la pagina principal. Es decir no puedo o no se hacer doble include. Pensaba que todo esto se solucionaba poniendo la ruta del archivo desde la raiz, /cabezera/barra.php), pero nada de nada. Es evidente que si pongo la ruta de la web entera funciona, http://www.LOQUESEA.com/cabezera/barra.php, pero esto es muy feo.


    Alguna solucion para erreglar este tipo de problemas?.


    Gracias


  1. Para hacer el include tienes que poner la ruta del servidor, no la ruta del dominio, algo así como:

    include(’/home/www/includes/barra.php’);


    Un saludo!


  2. algo tarde pero buena explicación, pero para los q vean esto

    lo que dice wifii no es tan extraño, me ha pasado y no me acuerdo como Dios lo resolvio,


    ahora.


    si “barra.php” esta en el mismo directorio que “cabecera.php” deberia incluirse de todas maneras


    puedes usar atajos weeb como “./” para llegar al archivo al menos en windows

    actualmente en php se puede anclar desde URLs pero siempre es bueno chegar el archivo de configuración por el buleanito “allow_url_fopen”


    nothing more


    UDLA - CHILE

    computin

    quijote shin


1-0

Código de conducta


Cualquier comentario / usuario que no cumpla uno de los siguientes requisitos,
sera borrado sin previo aviso:
  1. Ser persona
  2. No insultar (A eso se le llama Trolear)
  3. No escribir el texto en mayusculas (Es lo mismo que gritar)
  4. No Spamear (ej. hablar de lo que comiste ayer...)
  5. Evitar comentarios del tipo soy primero, soy segundo, hijo de puta...
  6. Escribir el comentario en castellano
  7. Saber el día de la semana que naciste
  8. No deshonrar la ortografia del editor

La sole

¡Participa en la discusión!




Tu Comentario:

background by eboy