Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/04/2004, 08:34
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El include_once() es una "red de seguridad" para que los programadores puedan ser despistados y permitir ciertas "licencias" que quizas implicarian una solucion un poco mas rebuscada.

Por ejemplo, tienes en include.php este codigo:
Código PHP:
function func($a) {
  return 
$a*2;

Y en index.php:
Código PHP:
include('include.php');
include(
'include.php'); 
Pues salta a la vista que es un error tener dos includes iguales en la misma pagina. Es decir, un fallo del programador. Usando include_once() ese fallo es inofensivo.

Esta claro que nadie va a poner dos include() seguidos. El problema suele aparecer cuando incluyes un fichero que incluye a su vez un tercero, y despues incluyes en la primera un cuarto que a su vez incluye el tercero. Entonces salta el error. Y puede que hayas incluido el tercero en el cuarto, poque el cuarto usa las funciones del tercero, y ademas de ser incluido en el primero, este cuarto es incluido en un sexto que no incluye el segundo. Posiblemente este ultimo parrafo sea ilegible del todo, ya que ni siquiera yo se cuantos ficheros he nombrado

Asi que si no quieres preocuparte de si incluyes el fichero varias veces usa include_once(). Si vas a controlar cuando se incluye cada fichero, usa include().

Posiblemente el include_once() fue una peticion de los programadores que estaban hasta las narices de usar el mismo truco que en C para despreocuparse de cuantas veces se incluia.

Por cierto, si quieres liarte un poco mas, tienes require() y require_once() que basicamente hacen lo mismo que include() e include_once().

Y el @ no es mal habito, siempre que lo uses con control y moderacion y solo cuando sabes que es seguro. Por cierto, @ no evita el error, solo evita que se muestre el mensaje de error. El error sigue existiendo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.