Sur stackoverflow, je vois ce problème surgir tout le temps:
- E_NOTICE? == E_DEBUG, en évitant isset () et @ avec un gestionnaire d'erreurs plus sophistiqué
- Comment configurer PHP pour ne pas vérifier l'index indéfini de $ _GET lorsque E_NOTICE est activé?
- Comment empêcher PHP d'enregistrer les erreurs de notification PHP
- Comment désactiver ces notifications PHP 5.3?
Même Pekka (qui offre beaucoup de conseils PHP solides) a heurté le E_NOTICE
monstre redouté et espérait une meilleure solution que d'utiliser isset()
: isset () et empty () rendent le code laid
Personnellement, j'utilise isset()
et empty()
à de nombreux endroits pour gérer le flux de mes applications. Par exemple:
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
Même un simple extrait comme celui-ci:
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
me semble très logique. Cela ne ressemble pas à du ballonnement, il ressemble à du code stable. Mais de nombreux développeurs lancent leurs applications avec E_NOTICE
les options activées, découvrent de nombreux avis frustrants sur les «index de tableau non initialisés», puis grimacent à la perspective de vérifier les variables définies et de «salir» leur code isset()
.
Je suppose que d'autres langues gèrent les choses différemment. Par expérience, JavaScript n'est pas aussi poli que PHP. Une variable non définie interrompra généralement l'exécution du script. De plus, (parlant d' inexpérience ), je suis sûr que des langages comme C / C ++ refuseraient simplement de compiler.
Alors, les développeurs PHP sont-ils juste paresseux? (sans parler de vous, Pekka, je sais que vous refactoriez une ancienne application.) Ou d'autres langages gèrent-ils les variables non définies plus gracieusement que de demander au programmeur de vérifier d'abord si elles sont définies?
(Je sais qu'il existe d'autres E_NOTICE
messages en plus des variables non définies, mais ceux-ci semblent être ceux qui provoquent le plus de chagrin)
Addendum
D'après les réponses fournies jusqu'à présent, je ne suis pas le seul à penser que le isset()
code n'est pas trop lourd. Donc, je me demande maintenant, y a-t-il des problèmes avec les programmeurs dans d'autres langues qui font écho à celui-ci? Ou s'agit-il uniquement d'un problème de culture PHP?