Hoje vamos falar um pouco sobre a utilização da função error_reporting do php.
Error_reporting é um parâmetro de configuração do php que seta quais níveis de erros serão reportados pela aplicação.
A função error_reporting() é utilizada para alterar esta diretiva em tempo de execução de scripts.
O parâmetro passado para a função é o nível do “report”, este pode ser um valor inteiro ou uma constante pré-definida.
// setando para exibir erros usando constante
error_reporting(E_ERROR);
// setando para exibir erros usando bitmask
error_reporting(1);
Apesar de os dois tipos serem suportados recomenda-se que os desenvolvedores utilizem as constantes, para manter a compatibilidade entre as versões do php, pois com a inserção de novos níveis de erros o intervalo de inteiros aumenta, com isso, o recurso não terá o efeito esperado.
Os principais níveis são:
E_ERROR
Erros fatais em tempo de execução. Estes indicam erros que não podem ser recuperados, como problemas de alocação de memória. A execução do script é interrompida.
E_WARNING
Avisos em tempo de execução (erros não fatais). A execução do script não é interrompida.
E_NOTICE
Notícia em tempo de execução. Indica que o script encontrou alguma coisa que pode indicar um erro, mas que também possa acontecer durante a execução normal do script.
E_ALL
Todos erros e avisos.
Para exemplificar, vamos criar uma pequena função que irá receber um texto e exibí-lo na tela:
function exibir($texto){
echo $texto;
}
Agora vamos colocar o nível E_ERROR e chamar a função por um nome incorreto:
// setando o nível de erro:
error_reporting(E_ERROR);
// chamando a função com o nome errado
// ira exibir a mensagem "Fatal error: Call to undefined function exibe()..."
exibe();
Agora vamos colocar o nível E_WARNING e chamar a função por um nome sem passar nenhum parâmetro:
// setando o nível de erro:
error_reporting(E_WARNING);
// chamando a função sem passar parâmetro
// irá exibir a mensagem "Warning: Missing argument 1 for exibir()..."
exibir();
Agora vamos colocar o nível E_NOTICE e chamar a função por um nome sem passar nenhum parâmetro:
// setando o nível de erro:
error_reporting(E_NOTICE);
// chamando a função sem passar parâmetro
// irá exibir a mensagem "Notice: Undefined variable: texto..."
exibir();
Agora vamos colocar o nível E_ALL e chamar a função por um nome sem passar nenhum parâmetro:
// setando o nível de erro:
error_reporting(E_ALL);
// chamando a função sem passar parâmetro
// serão exibidas todas as mensagens, nesse caso as de WARNING e NOTICE:
// "Warning: Missing argument 1 for exibir()..."
// "Notice: Undefined variable: texto..."
exibir();
Combinando Níveis
A função error_reporting permite ainda que sejam combinados os níveis de erro que serão reportados utilizando os operadores bit-a-bit.
Exemplos:
Operador OU (|)
// configurando para exibir apenas warnings e notices
error_reporting(E_WARNING | E_NOTICE);
// chamando a função sem passar parâmetro
// serão exibidas apenas as mensagens de WARNING e NOTICE:
// "Warning: Missing argument 1 for exibir()..."
// "Notice: Undefined variable: texto..."
exibir();
Operador XOR (^)
// configurando para exibir apenas warnings e notices
error_reporting(E_ALL ^ E_NOTICE);
// chamando a função sem passar parâmetro
// serão exibidas todas as mensagens, exceto as de NOTICE, neste caso apenas as de WARNING:
// "Warning: Missing argument 1 for exibir()..."
exibir();