<?PHP
class foo{
public $bar = NULL;
public function boo(){
$this->bar();
}
}
$mee = new foo();
//save a closure function on the property
$mee->bar = function(){
echo 'hahaha';
};
//invoke the closure function by using a class method
$mee->boo();
?>
你可以看到它在这里运行http://codepad.org/s1jhi7cv
我在这里阅读有关文档的信息时,可能会关闭孔http://php.net/manual/en/functions.anonymous.php
这可能吗?我做错什么了吗?请纠正我
解决方法:
您在codepad.org上的示例代码无法正常工作,因为codepad.org使用PHP 5.2.5,并且仅在5.3中添加了闭包支持.
但是,您的代码也将无法在支持闭包的PHP版本中使用,尽管您会收到另一个错误:http://codepad.viper-7.com/Ob0bH5
目前这是PHP的局限性. $obj-> member()查找名为member的方法,并且不查看属性以查看它们是否可调用.坦率地说,这很烦人.
我知道的没有call_user_func()/ call_user_func_array()的唯一方法是:
public function boo() {
$func = $this->bar;
$func();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。