PHP 5.6 (xampp) 显示警告而不是抛出 ArgumentCountError

PHP 5.6 (xampp) 显示警告而不是抛出 ArgumentCountError

我正在从 cli 运行一些 php 脚本。我使用 xampp 安装 php,路径为 var /c/xampp/php。当我想在 php5 和 7 等之间切换时,我倾向于通过重命名已安装的 xampp 文件夹来交换版本。

最近删除了我的 php5.6,不得不重新安装。现在由于某种原因,我可以运行任何函数而无需传入所需的参数,而且我只收到警告,而不是停止执行的异常。

例如。

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

//结果

$ 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!

这真是奇怪的行为。我从未见过 php 允许在没有必需参数的情况下调用函数。

有什么想法可以解释为什么会发生这种情况吗?

PS-还要注意,即使我禁用日志错误或显示错误以仅获取单个错误输出,它也会输出两次错误。(上面的例子没有在运行时设置任何错误处理,只是您看到的运行)

答案1

早期版本的 PHP 在遇到 ArgumentCountError 时会发出警告。

现在,至少从 v7.1 开始它会引发错误异常。

PHP 文档

相关内容