首先,这个问题纯粹是理论上的。事实是,无论是否可能,这将是非常糟糕的做法。话虽如此,这是我的问题:
PHP提供了通过set_error_handler
函数定义自定义错误处理程序的可能性。通过解析错误消息,可以找出触发错误的内容。
我主要对“调用未定义函数”错误感兴趣。我知道可以解析错误信息来揭开被调用的函数,这让我想到了。
在未定义函数的情况下,错误处理程序是否可以尝试包含文件(对于以functions.html.php
前缀开头的所有函数来说html_
),然后尝试重新执行最初触发错误的函数和参数?而且,最重要的是,在成功的情况下返回函数的值?
答案 0 :(得分:1)
实际上无法重新启动发生错误的执行。
然而:有一个系统可以使用__autoload
功能按需加载类。
从手册: -
您可以定义
__autoload
函数,如果您尝试使用尚未定义的类/接口,则会自动调用该函数。通过调用此函数,在PHP失败并出现错误之前,脚本引擎将获得加载类的最后机会。
PHP手册中有更多内容:http://php.net/manual/en/language.oop5.autoload.php
答案 1 :(得分:1)
简而言之,如果不使用exception handling,您将无法以您所描述的方式从错误中恢复。
有一种方法可以专门处理未定义的函数,但是也就是说来自对象的未定义的成员函数。这是__call()方法。基本上,如果从对象__call()调用未定义的方法,则接受该函数调用并执行在方法体中放置的任何内容,请参阅http://php.net/manual/en/language.oop5.overloading.php link text