Uma melhor compreensão das mensagens de erro pode reduzir significativamente o tempo gasto na identificação e correção do que está errado. Portanto, neste artigo, tentarei esclarecer os diversos tipos de mensagens de erro do PHP e como entender corretamente o significado de várias mensagens de erro durante o processo de desenvolvimento.
Ao compilar um script PHP, o compilador PHP faz o possível para relatar o primeiro problema que encontrar. Isso cria um problema: o PHP só consegue reconhecer o erro quando ele ocorre (esse problema é descrito em detalhes posteriormente neste artigo). É por esta razão que o compilador aponta que a linha com erro pode parecer sintaticamente correta na superfície, ou pode ser uma linha que não existe!
O conteúdo descrito neste artigo não tem nada a ver com a versão do PHP que você está usando, pois os diversos erros descritos neste artigo não se limitam a erros específicos em uma determinada versão. Além disso, presumimos que você seja um programador júnior ou intermediário e esteja envolvido em programação há meio ano ou um ano.
Como funciona o compilador
Para entender por que o compilador relata um erro em uma determinada linha, você deve primeiro entender o mecanismo pelo qual o compilador analisa o código PHP. Não vou entrar em detalhes sobre isso neste artigo, mas discutiremos alguns conceitos simples que têm maior probabilidade de levar a erros.
Declaração de variável
Se você declarar uma variável em uma instrução, o método específico será o seguinte:
$variável = 'valor';
O compilador avalia primeiro a metade direita da instrução (ou seja, tudo à direita do sinal de igual). Em alguns livros de programação, isso é representado como RHS (metade direita) da instrução. É esta parte da declaração que muitas vezes causa erros. Se você usar a sintaxe incorreta, receberá um erro de análise.
de análise
: Erro de análise, T_WHILE inesperado em c:program filesapache groupapachehtdocsscript.PHP na linha 19.
Os erros de análise continuam aparecendo um após o outro sempre que o erro anterior é determinado. Como o PHP para de executar o script após o primeiro erro de análise, depurar e corrigir essa série de erros pode ser particularmente cansativo.
Além disso, os erros de análise contêm muito pouca informação, quase nenhum relatório do número da linha onde o erro ocorreu. A razão específica é que, quando ocorre um erro, o compilador determina que a sintaxe de várias linhas deve parecer válida até encontrar uma sintaxe inválida. O caso mais provável é que palavras predefinidas sejam usadas na expressão, por exemplo, while = 10. ; // Ruim? while é uma palavra predefinida e não pode ser atribuída a um valor.
Palavras predefinidas incluem while, function, etc. Se o PHP usa para avaliar seu código, você não pode usar essas palavras predefinidas para nomear variáveis. ao fazer isso, o PHP reportará mais erros, que você não suporta.
Em relação a esse problema, o exemplo a seguir pode ajudá-lo. Por favor consulte e leia o código PHP mostrado abaixo:
<?PHP
$b = “algum valor”
if($b == "algum valor"){
imprima "Olá mundo!";
}
?>
O erro está na linha "$b=" (falta ponto e vírgula no final da instrução), então o erro deveria ser "Erro de análise: falta ponto e vírgula na linha 3", certo? Em vez de julgar pelo analisador:
Erro de análise: erro de análise, T_IF inesperado em c:arquivos de programasapache
grupoapachehtdocsereg2.PHP na linha 4
Na linha 4, a sintaxe da instrução if() está correta. Então, o que está confundindo o compilador? A pista é a parte "T_IF inesperado". Quando ocorre um erro "T_??? inesperado", significa: o compilador descobriu que uma palavra predefinida aparece em uma posição onde não deveria aparecer. T_IF representa if(), T_WHILE representa while(), T_FOR representa for(), etc.
Felizmente, as causas de alguns erros também são simples:
As instruções não terminam com ponto e vírgula (;), como no exemplo acima. As aspas estão faltando na string.
Alguns outros erros comuns
O erro mais comum que vejo é quando não fechamos uma função ou um loop com uma chave ( } ). Este é provavelmente o erro mais comum e irritante. O código específico é o seguinte:
function UselessFunction() {
for($i < 0; $i < 10; $i++){
}
O seguinte erro será gerado:
Erro de análise: erro de análise, inesperado $ em c:program filesapache
grupoapachehtdocsereg2.PHP na linha 9
Como a função UselessFunction não termina com chave (}), o compilador PHP continua procurando pela chave de fechamento até chegar ao final do arquivo. Como o compilador não encontra uma chave correspondente, ele relata um erro de final de arquivo.
Se a hierarquia do código for refletida corretamente, as mensagens de erro se tornarão muito óbvias. Se a estrutura hierárquica do código não estiver marcada, será quase impossível descobrir o que foi esquecido no final. Portanto, lembre-se de indicar a hierarquia do seu código. A tecla Tab facilita isso. Também será mais fácil para os desenvolvedores subsequentes compreender a estrutura do código e modificá-la.
Erro MySQL
Outra mensagem de erro extremamente irritante é o erro mais comum do MySQL, que muitas vezes causa dores de cabeça para novos usuários de PHP: Aviso: o argumento fornecido não é um recurso de resultado válido do MySQL em...
A linha errada relatada acima pode ser:
while($linha = MySQL_fetch_array($resultado)) {
O parâmetro $resultado não é um recurso válido. Em inglês significa que mysql_fetch_array não pode ser processado porque a consulta falhou. A sintaxe de qualquer consulta é inválida (você deve copiar e colar a consulta na referência do console MySQL para testar) ou a conexão com o banco de dados falhou (nesse caso, você deve verificar novamente o nome de usuário, senha, etc.).
Prevenindo Erros
Como primeiro passo, os programadores inteligentes podem tomar as seguintes medidas para eliminar os seguintes erros:
· Não pense em adicionar um ponto-e-vírgula no final de cada instrução - isso deve se tornar um hábito.
· Sempre indique a hierarquia do seu código sempre que possível. Isso permitirá que você veja se esqueceu de adicionar colchetes em locais como chamadas if ou no final de funções.
· Por favor use um editor com destaque de sintaxe (como HTML-Kit). Com a ajuda desse editor, você pode determinar se esqueceu de adicionar uma citação, se está faltando um ponto e vírgula, etc.
Conclusão
Neste artigo, temos uma certa compreensão de alguns erros aparentemente sem sentido que o compilador PHP pode relatar. Precisamos aplicar o que aprendemos para evitar erros e como corrigi-los quando eles ocorrerem. A depuração é uma das partes mais importantes do trabalho de um desenvolvedor. Melhorar a eficiência da depuração pode acelerar bastante o andamento de todo o trabalho e reduzir o tempo necessário para concluir um projeto. Também pode reduzir significativamente a pressão mental causada por falhas de código.
Não importa o quão cuidadosos sejamos ao escrever programas, os erros são inevitáveis. Esses erros geralmente confundem o compilador PHP. As mensagens de erro do compilador não são apenas inúteis, mas muitas vezes frustrantes se os desenvolvedores não entenderem o que elas significam.