Como usar o PHP error_reporting para uma depuração mais fácil

3 de novembro de 2021 Off Por sudoroot

Hoje, veremos como você pode usar a error_reportingfunção em PHP para fins de depuração.

A error_reportingfunção permite que você configure quais erros serão relatados em seus scripts PHP. Na verdade, quando você usa a error_reportingfunção em seu script PHP, ela apenas define a error_reportingdiretiva em tempo de execução. Se você estiver ciente do arquivo de configuração php.ini , ele fornece várias diretivas de configuração para diferentes propósitos, e a error_reportingdiretiva é uma delas. Especificamente, a error_reportingdiretiva permite que você defina o nível de relatório de erros em seus scripts PHP.

Neste artigo rápido, veremos os fundamentos da error_reportingfunção e discutiremos como você pode usá-la com eficácia no desenvolvimento de PHP no dia a dia.

Sintaxe

Vamos examinar rapidamente a sintaxe da error_reportingfunção.

1
error_reporting(int $error_level = null): int

Leva um único argumento que permite que você passe o nível de erro que você deseja definir. É um argumento opcional, portanto, se você não o aprovar, ele deve retornar o nível de relatório de erro atual.

Você pode passar uma máscara de bits ou constantes nomeadas neste argumento. No entanto, é recomendado passar constantes nomeadas para compatibilidade com versões futuras do PHP. Além disso, se você usar constantes nomeadas, também aumentará a legibilidade do seu código.

Existem diferentes constantes de erro que você pode passar no primeiro argumento da error_reportingfunção. A seguir está uma lista rápida de todas as constantes.

  • E_ERROR: exibe erros fatais de tempo de execução
  • E_WARNING: exibir avisos de tempo de execução
  • E_PARSE: exibe erros de análise em tempo de compilação
  • E_NOTICE: exibir avisos de tempo de execução
  • E_CORE_ERROR: exibe erros fatais que ocorrem durante a inicialização do PHP
  • E_CORE_WARNING: exibe avisos que ocorrem durante a inicialização do PHP
  • E_COMPILE_ERROR: exibe erros fatais de tempo de compilação
  • E_COMPILE_WARNING: exibe avisos fatais em tempo de compilação
  • E_USER_ERROR: exibe a mensagem de erro gerada pelo usuário
  • E_USER_WARNING: exibe a mensagem de aviso gerada pelo usuário
  • E_USER_NOTICE: exibe a mensagem de aviso gerada pelo usuário
  • E_STRICT: sugira alterações em seu código que garantirão a melhor interoperabilidade e compatibilidade futura
  • E_RECOVERABLE_ERROR: exibir erros fatais capturáveis
  • E_DEPRECATED: exibe avisos sobre o código que não funcionará em versões futuras
  • E_USER_DEPRECATED: semelhante a E_DEPRECATED, mas exibe apenas mensagens de aviso geradas pelo usuário
  • E_ALL: exibe todos os erros, avisos e notificações

Cada constante permite definir um nível diferente de relatório de erros. Na próxima seção, veremos como você pode usar a error_reportingfunção no desenvolvimento diário de PHP.

Como usar a função error_reporting

Na seção anterior, examinamos a sintaxe da error_reportingfunção. Nesta seção, veremos como você pode usá-lo em seus scripts PHP.

Exibir todos os erros

Vamos examinar rapidamente o exemplo a seguir.

1
2
3
4
5
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $foo;
?>

No exemplo acima, passamos a E_ALLconstante no primeiro argumento da error_reportingfunção e, portanto, ela exibirá todos os erros, avisos e avisos em nosso script. Se você executar o script acima, ele deverá exibir o seguinte erro.

1
Notice: Undefined variable: foo in /web/demo/error_reporting.php on line 4

Visto que estamos usando a $foovariável sem defini-la de antemão, isso lança um aviso para informar que você deve definir a $foovariável antes de realmente usá-la.

Como alternativa, você também poderia passar em -1vez da E_ALLconstante, conforme mostrado no trecho a seguir, e isso mostraria todos os erros possíveis.

1
2
3
<?php
error_reporting(-1);
?>

A E_ALLconstante é realmente útil para depurar o famoso erro WSOD (tela branca da morte).

Exibir todos os erros, exceto avisos

Vamos examinar o exemplo a seguir.

1
2
3
4
5
<?php
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);
echo $foo;
?>

Quando você usa a error_reportingfunção, você pode usar operadores como &, |e ~de omitir e específicas filtro tipos de erros. No exemplo acima, queremos exibir todos os tipos de erros, exceto avisos e, portanto, usamos o ~operador na frente da E_NOTICEconstante. Se você executar o script acima, ele não exibirá o aviso que teria exibido se você tivesse usado apenas a E_ALLconstante.

Exibir avisos e advertências

Nesta seção, veremos como você pode exibir apenas tipos específicos de erros. Vamos examinar rapidamente o exemplo a seguir.

1
2
3
4
5
6
<?php
error_reporting(E_WARNING | E_NOTICE);
ini_set('display_errors', 1);
include "foo_bar.php";
echo $foo;
?>

No exemplo acima, estamos instruindo a error_reportingfunção de que queremos exibir apenas avisos e notificações. Como você pode ver, usamos o |operador para exibir os dois tipos de erros.

É assim que você pode usar a error_reportingfunção com diferentes tipos de constantes de erro para fins de depuração em seu desenvolvimento de PHP do dia a dia.

Conclusão

Hoje, discutimos como você pode usar a error_reportingfunção em PHP para depurar erros em seus scripts PHP. Discutimos como você pode usá-lo para exibir diferentes níveis de erros durante o desenvolvimento.