在PHP中是否有可能防止“致命错误:调用未定义的函数”?
2022-08-30 23:58:58
在PHP中,有没有办法忽略未定义的函数,而不是引发浏览器中可见的致命错误?即致命错误:调用未定义的函数
我知道有将所有自定义函数包装在条件中的做法,如下所示,但是是否有一种编程方法来获得这种效果?
if (function_exists('my_function')) {
// use my_function() here;
}
在PHP中,有没有办法忽略未定义的函数,而不是引发浏览器中可见的致命错误?即致命错误:调用未定义的函数
我知道有将所有自定义函数包装在条件中的做法,如下所示,但是是否有一种编程方法来获得这种效果?
if (function_exists('my_function')) {
// use my_function() here;
}
不。致命错误是致命的。即使您编写自己的错误处理程序或使用错误抑制运算符,错误仍会导致脚本停止执行。@
E_FATAL
处理这个问题的唯一方法是使用function_exists()
(可能还有is_callable()
作为很好的衡量标准),如上面的示例所示。
围绕潜在(可能?)错误进行防御性编码总是一个更好的主意,而不是让错误发生并在以后处理它。
编辑 - php7 改变了这种行为,未定义的函数/方法是可捕获的异常。
在 php 7 中,这现在是可能的。
示例编解码器:
try {
some_undefined_function_or_method();
} catch (\Error $ex) { // Error is the base class for all internal PHP error exceptions.
var_dump($ex);
}
http://php.net/manual/en/migration70.incompatible.php
在 PHP 7 中,许多致命和可恢复的致命错误已转换为异常。这些错误异常继承自 Error 类,该类本身实现可抛出接口(所有异常都继承的新基接口)。