Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/04/2004, 08:46
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
En efecto, si analizo la estructura de mi web, veo que a veces una variable termina siendo redeclarada 3,4 veces.
Mas que una variable .. lo que te "reclama" es por funciones declaradas varias veces .. Si estructurases tu sitio deacuerdo a los "include" que haces en cada uno y los que requieres en los que a su vez incrustras en otros no deberías de requerir el uso de include_once(), pero si haces scripts multipropósito que puedan ser accedidos de forma directa o bien bajo llamadas de otros scripts (por include()) ... ahí te hará falta el _once() ...

A todo esto .. también tienes el require() que es "mas seguro" si cabe que el include() (y también tienes el _once para este). El include proboca un error de "notice" si el archivo no se completó su carga .. el require() arroja un "Waring" si no se completó su carga por algún problema. Esto detiene la ejecución por completo del script .. mientras que el include() puede continuar la ejecución .. lo cual podría probocar algún error derivado de la no total carga del archivo en cuestión.

Los xxx_once() necesitan algo más de tiempo de proceso para evaluar si las funciones que ahí puedan contener ya están declaradas para no volverlas a declarar .. Por ende no es que sea mejor el "require_once()" .. sino que cada función de estas hay que usarlas donde corresponda.

Cita:
Con una @ al principio de cada instruccion puedo (creo), evitar esos errores, pero eso es (creo) mal habito de un programador PHP.
Esto no evita el error sino sólo lo "tapa" ocultando el mensaje de error posible pero no el error en sí. Es más si tubieras activado el reporte de errore en un log .. verías como tu archivo de log crece y crece ..

Por ejemplo ..

mal habito: tomar una variable externa de un script (que venga por GET/POST o sea una sesión/cookie entre otras sin verificar que existe .. en configuraciones de "error_reporting" (E_ALL) te diría que tal variable no está declarada en determinados casos.

Código PHP:
<?
echo @$_GET['variable'];
?>
buen habito:

Comprobar si existe dicha variable antes de usarla:

Código PHP:
<?
if (isset($_GET['variable'])){
// si existe .. se usa ..
echo $_GET['variable'];
}
?>
En cuanto a funciones también puedes comprobar si X función definida tuya (por tu código) o incluso própia de PHP existe o no (function_exists()) por si la requieres.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.