如果PHP函数的参数类型提示(或"type declaration")表示“数组”,并且您使用其他值调用此函数,例如一个整数,应该有一个
致命错误:未捕获的TypeError:传递给foo()的参数1必须是数组类型,整数给定为“。
代码:
function foo(array $x) {}
foo(5); // -> Fatal error.
3v4l确认了这一点:https://3v4l.org/7BTtr 错误显示在所有相关的PHP版本中。
但是,我有一个本地PHP项目,其中默认忽略类型提示,不显示错误,后续代码正常执行。
一些调试:
我想有一个ini_set()
或其他东西可以改变PHP对这些错误的行为。
但我不知道哪个PHP设置(如果有的话)会导致忽略类型错误。
答案 0 :(得分:2)
问题是由自定义错误处理程序函数引起的。在PHP 5中,如果自定义错误处理程序未返回FALSE,则脚本将继续运行。
以下演示确认了这一点:https://3v4l.org/neFdl。在PHP5中查找结果!
在我的情况下,它是带有_drupal_error_handler()的Drupal 7。如果错误代码与error_reporting()
的当前值不匹配,此函数将以静默方式忽略该错误并且不显示或记录任何内容。
这看起来很愚蠢,但至少现在我知道发生了什么。