Eu tenho uma biblioteca e não percebi que ela estava emitindo avisos de suspensão de uso até que alguém criou um problema no GitHub. Eu habilitei:
error_reporting(E_ALL);
E corrigiu todos os avisos de depreciação. Mas a questão é: você pode fazer com que o código sempre falhe (penso em testes unitários) se houver avisos de descontinuação? Eu estava pensando em adicionar ob_
buffer com uma expressão regular para testar se não há avisos e gerar um erro. Mas isso exigiria algum código que não ficaria bonito.
Existe uma maneira fácil de alternar algumas opções para tornar os avisos erros reais? Então o teste unitário não passa e o código sempre falha? Quero que meu código seja à prova de futuro e não falhe quando o PHP decidir substituir a obsolescência por um erro real.
Sim, você pode fazer o PHP tratar todos os erros, incluindo E_DEPRECATED e E_USER_DEPRECATED, como exceções usando a função set_error_handler. Esta função permite que você defina uma função de tratamento de erros personalizada que será chamada sempre que ocorrer um erro