Ver Mensaje Individual
  #20 (permalink)  
Antiguo 01/06/2007, 11:27
usermax
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 18 años, 2 meses
Puntos: 11
Re: Explicacion sobre una condicion IF

Hola,
Eso es cierto, vuelvo a mi código:


Cita:
if( $_GET["var"]) da VERDADERO porque toda
variable que tenga un valor diferente de cero,
en este caso es "Gonzalo" equivale a un true.
La conversión es AUTOMATICA.

Esto es en el caso de que $_GET['var'] este definida. Pero cuando no este definida si puede dar una noticia php cuando se usa error_reporting(E_ALL).

Eso es cierto. Pero no significa que afectan la lógica de funcionamiento, PARA NADA ni que den errores lógicos porque yo si configuro a error_repoting así:

error_reporting(E_STRICT); Pues ya no salen las noticias (NO SON ERRORES).

Con respecto a usar E_STRICT y evitar que salgan las noticias para mi tiene sus ventajas. A otros esta configuración hace que en grandes script se vuelva locos, pero todo depende de la lógica y las estrategias que usa el programador. No podemos decir de manera definitiva que una es mejor que otra.

Entonces, si la configuración es E_STRICT correrá por cuenta de uno validar las variables y no dejar que ellas corran solas.

Con una configuración en E_ALL por ejemplo se haría algo así:

$var = isset($_GET['var']) ? $_GET['var'] : false;
if ($var)... ya fue definida anteriormente. O podrá hacer de manera directa:

if (isset($_GET['var'])) ...

POr medio de este ejemplo ya usado nos aseguramos que $var esté definida (con una configuración en E_ALL) no salga el reporte de noticia de PHP.

Pero con E_STRICT desde MI PUNTO DE VISTA es más sencillo hacerlo así:

if ($_GET['var']) {

ejecuto...

}
else {

No existe o es cero

}

if ($_GET['var']) da false si esa variable no existe y no tira ningun reporte con E_STRICT.

Entonces el programador controla de manera directa las variables y PARA MI es mucho más sencillo.

Por algo PHP tambien trae la opción E_STRICT.

E_STRICT = "Habilite este valor para hacer que PHP sugiera cambios en su código que velarán por la mejor interoperabilidad y por mantener la compatibilidad de su código".

O usar (E_ALL & ~E_NOTICE)

PD: Ya que estamos nicolaspar me guataría que aclares por qué dices que $foo = array("hello"=>"word"); estaría mal y cómo estaría bien usarlo.

Última edición por usermax; 01/06/2007 a las 11:37