Php 如何使set_error_handler()调用对象上的方法?
我考虑使用PHP中的Php 如何使set_error_handler()调用对象上的方法?,php,Php,我考虑使用PHP中的set\u error\u handler()功能在一个位置处理大多数PHP错误(将它们记录到文件中)。从文档中可以看出,我是否可以将函数名传递给set\u error\u handler()。美好的但是我有一个ErrorManager对象,它有一个很好的日志记录方法。我想使用ErrorManager对象并为其编写一个特殊的错误处理程序方法,并让set\u error\u handler调用ErrorManager 我能做点什么吗 set_error_handler($thi
set\u error\u handler()
功能在一个位置处理大多数PHP错误(将它们记录到文件中)。从文档中可以看出,我是否可以将函数名传递给set\u error\u handler()
。美好的但是我有一个ErrorManager
对象,它有一个很好的日志记录方法。我想使用ErrorManager
对象并为其编写一个特殊的错误处理程序方法,并让set\u error\u handler
调用ErrorManager
我能做点什么吗
set_error_handler($this->customErrorHandler);
还是无效?传入对象数组和要调用的方法名:
set_error_handler(array($this, 'customErrorHandler'));
采取以下行动:
一些函数,如call_user_func()
或usort()接受用户定义的
回调函数作为参数。
回调函数不仅可以是
简单的函数,也是对象
方法,包括静态类
方法
PHP函数通过其名称传递
一串。任何内置或
可以使用用户定义的函数,
除以下语言结构外:
数组(),echo(),empty(),eval(),
退出()、isset()、列表()、打印()或
取消设置()
实例化对象的方法是
作为包含
索引0处的对象和方法名称
在索引1处。
静态类方法也可以是
未实例化对象而传递
通过这个班就可以得到那个班的学生
名称,而不是索引0处的对象
除了常见的用户自定义
函数,创建函数()也可以
用于创建匿名
回调函数。从PHP5.3.0开始
也可以将闭包传递给
回调参数
(添加了强调)接受一个参数
引用该页:
实例化对象的方法是
作为包含
索引0处的对象和方法名称
在指数1
在您的例子中,您需要一个回调,该回调对应于对象的方法(称为“
customErrorHandler
”)(此处为“$this
”);然后,回调将是:
array($this, 'customErrorHandler')
因此,您将使用这部分代码:
set_error_handler(array($this, 'customErrorHandler'));
在PHP 5.3中,您可以在闭包中完成:
$that = $this;
set_error_handler( function() use ($that) { $that->customErrorHandler(); } );
从set_error_handler()()()()的手动输入中:“…包含对象引用和方法名称的数组也可以作为错误处理程序提供。”
$此
在5.3中的闭包中不可用,不是吗?确实,您必须为其创建一个额外的变量。我相应地更新了代码…