在PHP 5.4.0之前,PHP中有$ this这个隐式函数
据http://php.net/manual/en/functions.anonymous.php,在PHP 5.3 $this
不是来自一个隐函数内部访问,即使该功能在上下文定义$this
存在。 有什么办法可以解决这个限制吗? (顺便说一下,升级Web服务器上的PHP安装是不可能的)
我想使用隐式函数的方式是定义一个回调,它是某个对象的成员函数。 更确切地说,我想做类似的事情
$callback = function() { return $this->my_callback(); }
事实上,更好的语法将是事件
$callback = $this->my_callback
但我不能让它工作(当我尝试执行回调时,PHP死于“致命错误:函数名称必须是字符串”)。
应该做的工作:
$object = $this ;
$callback = function() use ($object) { return $object->my_callback(); } ;
use
会在其声明到函数作用域时带来一个可访问的变量(在我们的例子中是对象的引用),所以你不必将它作为参数发送。
有时甚至更好地使用像$self
或$that
这样更清晰的varname。
$function = array($this, 'my_callback');
(可能与call_user_func()
结合)
看起来你可以将变量传递给回调函数。 我没有在PHP中使用闭包,但我认为这会适用于你:
$callback = function($instance) { return $instance->my_callback(); }
$callback($this);
或者,如果回调是在当前课程之外触发的。
$callback($myClassInstance);
链接地址: http://www.djcxy.com/p/59145.html