Pregunta

Básicamente tengo un montón de enlaces en una página y voy a utilizar algo como esto

<?PHP echo $SITE_PATH ?>

Muchas muchas veces en la misma página, pero se mostrará un aviso en PHP para hacerlo.

Sé que se supone que usar cosas como isset () pero ¿realmente hay que usarla cada vez que llamo?

<?PHP echo $SITE_PATH ?>

--- EDIT:
Si cambio al uso de una variable definida, a continuación, los avisos parecen desaparecer

¿Fue útil?

Solución

Dos soluciones, aquí:

  • sólo utilizan variables que existen -. Que es lo que probablemente debería hacer
  • o la prueba si es que existen (con isset) antes de tratar de usarlos.

No hay magia ^^

Si su aplicación es el uso de muchas variables no establecidas-, probablemente tenga algún problema en su diseño.


En un caso como el que se presenta, para una variable que se utiliza muchas veces, me aseguraría de que existe, y, si no, ponerlo en '', por ejemplo, al comienzo de mi guión.

Eso no es verdad que parece grande, pero que va a trabajar -. Y, de esta manera, usted no tendrá que pasar por todo su aplicación, todo lo parcheo

(O Yo también puede desactivar el nivel E_NOTICE error_reporting - No me gusta esa idea, pero, a veces, es realmente la única manera de tratar con alguna base de código)

Otros consejos

Puede suprimir los mensajes mediante el uso de @:

print @$site_path;

O puede utilizar una operación ternaria para obtener un valor por defecto:

print (isset($site_path)) ? $site_path : "default_path" ;

En el final, sin embargo, no se debe utilizar variables que no estén establecidos. Si usted es, usted tiene que volver a pensar en su enfoque. Manejar esta información por adelantado, por lo que el resto de las secuencias de comandos se puede ejecutar sin problemas de este tipo.

Usted realmente debe asegurarse de que se establece una variable antes de usarla (especialmente haciendo eco a la página). Si la variable proviene de una fuente insegura ($ _GET, $ _POST, base de datos), entonces debería hacer algún tipo de filtrado para evitar un fallo de seguridad (cross site scripting (XSS), cruz de petición en sitios de falsificación (CSRF), etc .. .), pero si se siente como todo es seguro y simplemente no quieren mostrar errores (por ejemplo, en la producción) fijar su informe de errores a 0.

por ejemplo. error_reporting(0);

Usted puede hacer esto a nivel php.ini o por página (conjunto error_reporting(0); en la parte superior de la página).

En una nota lateral, cuando en la producción que no siempre desea mostrar los errores. Entrar en su lugar. En el desarrollo quieres ver todos sus errores (E_STRICT).

Se puede crear una función para comprobar si se ha establecido la variable y devolverlo:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top