我正在使用spl_autoload_register在需要时加载某些类,但是当我的自动加载方法找不到类时,如何捕获错误?
现在,我看到的唯一解决方案是在自动加载回调中显示一条可爱的错误消息并停止应用程序,以便永远不会显示错误。
但我不想停止申请。我想继续并跳过我需要的缺失类的实例化(在我的具体情况下,应用程序不再严格要求它们继续运行)
答案 0 :(得分:8)
在加载前使用class_exists()
并正确处理结果。如果存在,则按照惯例进行实例化。如果没有,请跳过实例化。
答案 1 :(得分:1)
为了使错误静音,您可以在调用时动态创建缺少的类,但我不推荐这种方法。
以下代码对我有用:
function __autoload($name) {
eval("class {$name} {}");
}
echo 'pass 1';
$a = new a();
echo 'pass 2';