Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/05/2007, 09:18
santhy
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 2 meses
Puntos: 10
Re: ¿Cómo evitar el mensaje de error cuando aún no está definida la variable?

Al hacer if( SENTENCIA ) {}
Se evalúa si el contenido de SENTENCIA es verdadero (1, cualquier string no vacía, true, un array, un objeto...) o falso (el resto).

Al preguntar por $submit, si no existe te lanza un notice: Undefined variable.

Para evitar el informe del error (aun existiendo) puedes preceder la parte problemática de @, que queda muy bonito, no se ve, ocupa poco espacio y además es una mala práctica ;)

Lo realmente bueno es el orden de operadores. Por ejemplo, && opera de izqda. a derecha. Si lo de la izquierda es falso ya no se evalúa lo de la derecha.

Por lo tanto, es lo mismo para el que lo vea decir (excepto porque sigue dando el error):

if(!@$submit) {
// CODE
}

que decir

if(isset($submit) && $submit) {} else {
//CODE
}

o incluso

if(!isset($submit) || !$submit) {
// CODE
}


Si no recuerdo mal, el operador || también actúa de izquierda a derecha.

Sin embargo, la sentencia:

if(!isset($submit)) {
// CODE
}

Podría servirte en algunos casos, pero recuerda que, al contrario que en los otros ejemplos, si la defines a cero ($submit = 0; o $submit = false; o $submit = null;) está definida y por tanto pasaría la validación, aunque muchas veces no quieras eso.


Espero haberte ayudado. Un saludo.