参数比预期的多:PHP 中没有错误


More parameter than expected: no error in PHP?

请参阅此代码,其中我将比预期更多的参数传递给自定义函数:

error_reporting(E_ALL);
ini_set("display_errors", 1);
daidai("asassa", "asgfasfas", "asassa");
function daidai($aa)
{
    echo $aa;
}

这根本不会发出错误,而我期待Warning: function daidai() expects at most 1 parameter, 3 given

令我困惑的是,这按预期发出了上述错误:

$Odate=new DateTime();
$sfasfasf=$Odate->setTime("23", "59", "30", "unexpected");

为什么?

这是因为setTime()方法本身对参数的数量执行检查,如果你想在你的函数中使用它,你必须自己实现它。

作为参考,您可以查看func_num_args()func_get_arg()func_get_args()的文档

从文档中:

不需要特殊的语法来注意函数是可变的; 但是,访问函数的参数必须使用 func_num_args(), func_get_arg() 和 func_get_args()。

因此,php 确实将每个函数都视为可变参数函数。