No stackoverflow, vejo esse problema surgir o tempo todo:
- E_NOTICE? == E_DEBUG, evitando isset () e @ com error_handler mais sofisticado
- Como configurar o PHP para não verificar o índice undefind para $ _GET quando E_NOTICE está ativado?
- Como parar o PHP de registrar erros de aviso do PHP
- Como desativo esses avisos do PHP 5.3?
Até Pekka (que oferece muitos conselhos sólidos sobre PHP) esbarrou no E_NOTICE
monstro temido e esperava uma solução melhor do que usar isset()
: isset () e empty () tornam o código feio
Pessoalmente, eu uso isset()
e empty()
em muitos lugares para gerenciar o fluxo de meus aplicativos. Por exemplo:
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
Mesmo um trecho simples como este:
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
parece muito lógico para mim. Não parece inchaço, parece código estável. Porém, muitos desenvolvedores acionam seus aplicativos com E_NOTICE
o ativado, descobrem muitos avisos frustrantes de "índice de matriz não inicializado" e fazem caretas com a perspectiva de verificar as variáveis definidas e "jogar lixo" no código isset()
.
Suponho que outros idiomas lidem com as coisas de maneira diferente. Falando por experiência própria, o JavaScript não é tão educado quanto o PHP. Uma variável indefinida normalmente interrompe a execução do script. Além disso, (falando por inexperiência ), tenho certeza de que linguagens como C / C ++ simplesmente se recusariam a compilar.
Então, os desenvolvedores PHP são preguiçosos? (sem falar de você, Pekka, eu sei que você estava refatorando um aplicativo antigo.) Ou outras linguagens lidam com variáveis indefinidas mais graciosamente do que exigir que o programador verifique primeiro se elas estão definidas?
(Eu sei que existem outras E_NOTICE
mensagens além de variáveis indefinidas, mas essas parecem ser as que causam mais desgosto)
Adendo
Das respostas até agora, não sou o único que pensa que isset()
não é um inchaço de código. Então, estou me perguntando agora, há problemas com programadores em outras linguagens que ecoam essa? Ou isso é apenas um problema de cultura PHP?