PHP 5.6 (xampp) está mostrando avisos em vez de lançar ArgumentCountError

PHP 5.6 (xampp) está mostrando avisos em vez de lançar ArgumentCountError

Estou executando alguns scripts php do cli. Eu uso a instalação do xampp para php com caminho var/c/xampp/php. Costumo trocar versões renomeando pastas xampp instaladas quando quero alternar entre php5 e 7 etc.

Excluí recentemente meu php5.6 e tive que reinstalá-lo. Agora, por algum motivo, posso executar qualquer função sem passar os parâmetros necessários e só recebo um aviso em vez de uma exceção interrompendo a execução.

por exemplo.

    <?php
function someFunction($required_param){
    if (!isset($required_param)) die('WTF! Param was not passed in yet im allowed to execute!');
}
someFunction();

//resultados com

$ php test/test.php
PHP Warning:  Missing argument 1 for someFunction(), called in C:\repo\php5\orm\test\test.php on line 5 and defined in C:\repo\php5\orm\test\test.php on line 2

Warning: Missing argument 1 for someFunction(), called in C:\repo\php5\orm\test\test.php on line 5 and defined in C:\repo\php5\orm\test\test.php on line 2
WTF! Param was not passed in!

Este é um comportamento realmente estranho. Eu nunca vi o php permitir que uma função fosse chamada sem os parâmetros necessários.

Alguma idéia de como isso poderia acontecer?

PS - observe também que ele gera o erro duas vezes, mesmo se eu desabilitar erros de log ou exibir erros para obter apenas uma única saída de erro. (o exemplo acima não define nenhum tratamento de erros em tempo de execução, apenas o que você vê é executado)

Responder1

Versões anteriores do PHP geravam um aviso quando encontravam ArgumentCountError.

Agora, pelo menos a partir da v7.1, surge uma exceção de erro.

Documentação PHP

informação relacionada