0

Como Consertar Erros de Undefined Variable

criado por Marcus Vinícius E. Zamignani em 01/04/2002 10:01am
<?php
if ($a == "b") {
   echo "lala";
} elseif ($a == "c") {
   echo "lele";
} else {
   echo "lulu";
}
?>

No trecho de codigo acima imagine que você quer que se enquadre em "else" a condição de $a ser vazio ou de $a nao estiver sido inicializado ou de diferente de "b" e de "c".

Com a constante E_ALL em error_reporting, isso iria lhe gerar uma mensagem de Warning, um simples aviso de que a variável $a não foi inicializada, ou seja, que $a é uma variável que ainda não tem uma definição.

Para contornar isto, você poderia aumentar seu código como

<?php
if (!isset($a)) {
   echo "lulu";
} elseif ($a == "b") {
   echo "lala";
} elseif ($a == "c") {
   echo "lele";
} else {
   echo "lulu";
}
?>

Ou poderia utilizar @ pra ocultar o warning. Porém, não se esqueça de que @ oculta todos os erros e não só warnings.

<?php
if (@$a == "b") {
   echo "lala";
} elseif (@$a == "c") {
   echo "lele";
} else {
   echo "lulu";
}
?>

Colocando isset() ou @ na minha opinião é algo que só vai lhe tomar tempo dependendo do tamanho do codigo, e no caso de @ talvez ocultar algum outro erro acidental, eu recomendo que seja modificado seu arquivo php.ini (normalmente encontrado em C:\Windows\) e na opção error_reporting modifique para:

error_reporting = E_ALL & ~ E_NOTICE;

Salve e reinicie o Apache.

Isso irá desligar esses erros de warning que na minha opinião são totalmente desnecessários :oP apesar de muitas controvérsias.

Caso você não tenha acesso ao php.ini ou não queira modificá-lo coloque no inicio de seu código:

<?php
error_reporting(E_ALL & ~ E_NOTICE);
?>

Isso terá o mesmo efeito para o código aonde tiver esta diretiva...

Bom eh isso ai :~

[]´z

Marcus

Comentários:

Mostrando 1 - 5 de 5 comentários
Obrigado por este artigo, nem imagine o quanto foi util para mim, obrigado mesmo.
15/09/2007 6:43am (~16 anos atrás)

Robson Reis disse:
Cara gostei demais da sua dica, já estava ficando doido com esses warnings estúpidos,faleu mesmo...
22/03/2005 3:21pm (~19 anos atrás)

Rodrigo,
é bem neste sentido que me referi, quando postei estes comentários... não quer dizer q está errado, porém, não está totalmente correto !!!
01/04/2002 2:25pm (~22 anos atrás)

sim, mas é um aviso de que algo não está correto ! :)
01/04/2002 10:58am (~22 anos atrás)

Na minha opinião, isso que você mostrou apenas inibe a apresentação dos possíveis erros e warnings, e não conserta... se está aparecendo um erro ou um warning é porque algo não está certo ! :)
01/04/2002 10:34am (~22 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)