微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PHP的类属性中存储闭包函数

好的,我有下面的代码

<?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

现在我想要在这里将闭包函数存储在class方法上.

在这里阅读有关文档的信息时,可能会关闭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 举报,一经查实,本站将立刻删除。

相关推荐