PHP - 使用set_error_handler()调用对象中的函数

时间:2008-11-26 04:45:32

标签: php

我正在尝试在我的页面类中使用它。我刚刚开始在PHP中使用对象,所以我仍然有点无能为力(但我尽可能多地学习)。这是我的page()函数(当有新的页面实例时调用)

set_error_handler('$this->appendError');

这导致错误

  

警告:set_error_handler()期望参数(appendError)是有效的回调

现在如何在将函数作为字符串传递的同时设置类内部函数。这不可能吗?我应该使用普通函数,然后调用类函数并通过所有参数发送?这对我来说听起来有点麻烦。

或者我错过了这个问题?我已经尝试让我的appendError返回一个字符串,并回显..但它仍然不是很好玩。

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:22)

很少有问题。

首先:

'$this->appendError'
是一个nogo。它没有将$ this解释为当前类,php将其解释为字符串'$ this'。

第二:尝试

set_error_handler(array($this, 'appendError'));

如果这不起作用,请将$ this替换为类名并静态使用它。

答案 1 :(得分:1)

阅读php.net callback documentation。我认为例3最接近你想要的:

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));