出错时,尝试包含文件并重新执行失败的函数

时间:2009-11-03 09:19:33

标签: php error-handling

首先,这个问题纯粹是理论上的。事实是,无论是否可能,这将是非常糟糕的做法。话虽如此,这是我的问题:

PHP提供了通过set_error_handler函数定义自定义错误处理程序的可能性。通过解析错误消息,可以找出触发错误的内容。

我主要对“调用未定义函数”错误感兴趣。我知道可以解析错误信息来揭开被调用的函数,这让我想到了。

在未定义函数的情况下,错误处理程序是否可以尝试包含文件(对于以functions.html.php前缀开头的所有函数来说html_),然后尝试重新执行最初触发错误的函数和参数?而且,最重要的是,在成功的情况下返回函数的值?

2 个答案:

答案 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