请考虑以下代码:
try {
include_once "malformedFile.php";
} catch(Exception $e) {
return null;
}
我无法确保文件malformedFile.php是有效的PHP代码,不会崩溃或不会调用die()。即使malformedFile.php死亡或崩溃,我怎样才能继续捕获?我的兴趣是让应用程序尽可能健壮,同时仍允许用户通过包含实现自己的插件。
感谢。
答案 0 :(得分:3)
不幸的是,你做不到。如果包含的代码导致致命错误(例如语法错误),那么你就死在了水中。
您可以尝试的是手动加载文件然后调用eval
:
$code = file_get_contents("malformedFile.php");
eval($code);
当然,这是你在做之前应该三思而后行的事情因为我们都知道eval
是邪恶的等等。
最强大的选择是为您生成另一个执行include
的进程(因此,如果它意外死亡没什么大不了的话),但父进程和子进程之间的通信将比仅使用一个进程更难过程
答案 1 :(得分:1)
Include
将包含来源,无法绕过它。
也许您可以将此文件称为外部流程,只需使用结果即可。这可以像CLI脚本或单独的CURL调用一样完成。