En stackoverflow, veo que este problema surge todo el tiempo:
- E_NOTICE? == E_DEBUG, evitando isset () y @ con un error_handler más sofisticado
- ¿Cómo configurar PHP para que no verifique el índice undefind para $ _GET cuando E_NOTICE está activado?
- Cómo evitar que PHP registre errores de aviso de PHP
- ¿Cómo desactivo tales avisos de PHP 5.3?
Incluso Pekka (que ofrece muchos consejos sólidos de PHP) se ha enfrentado al temido E_NOTICE
monstruo y espera una mejor solución que usar isset()
: isset () y empty () hacen que el código sea feo
Personalmente, uso isset()
y empty()
en muchos lugares para administrar el flujo de mis aplicaciones. Por ejemplo:
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
Incluso un fragmento simple como este:
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
Me parece muy lógico. No parece hinchado, parece un código estable. Pero muchos desarrolladores inician sus aplicaciones con E_NOTICE
las habilitadas, descubren muchos avisos frustrantes de "índice de matriz no inicializados" y luego hacen una mueca ante la perspectiva de verificar variables definidas y "ensuciar" su código isset()
.
Supongo que otros idiomas manejan las cosas de manera diferente. Hablando por experiencia, JavaScript no es tan educado como PHP. Una variable indefinida típicamente detendrá la ejecución del script. Además, (hablando por inexperiencia ), estoy seguro de que lenguajes como C / C ++ simplemente se negarían a compilar.
Entonces, ¿los desarrolladores de PHP son simplemente vagos? (sin hablar de ti, Pekka, sé que estabas refactorizando una aplicación antigua). ¿O otros lenguajes manejan las variables indefinidas con más gracia que exigirle al programador que primero verifique si están definidas?
(Sé que hay otros E_NOTICE
mensajes además de las variables indefinidas, pero esos parecen ser los que causan más disgusto)
Anexo
A partir de las respuestas hasta ahora, no soy el único que piensa que isset()
no es un código inflado. Entonces, me pregunto, ¿hay problemas con los programadores en otros lenguajes que se hacen eco de este? ¿O es solo un problema de cultura PHP?