如何从Lambda函数访问父对象?

2021/01/26 14:21 · php ·  · 0评论

我的一个对象中有一个递归lambda函数,它需要访问该对象的mysqli连接。这次尝试

$recfunc = function($id, $name) use($this) {

产生了不合理的致命错误

致命错误:不能在第88行的C:\ Users \ Codemonkey1991 \ Desktop \ workspace \ melior \ objects \ databasemanager.php中将$ this用作词汇变量

谁能给我一些指导?


编辑:只是为了澄清上下文,我试图在另一个函数内创建此lambda函数。

因为闭包本身就是对象,所以您需要分配$this给局部变量,例如:

$host = $this;
$recfunc = function($id, $name) use ($host) { ...

对该引用的引用$this无需显式传递给lambda函数。

class Foo {
    public $var = '';

    public function bar() {
        $func = function() {
            echo $this->var;
        };
        $func();
    }
}

$foo = new Foo();
$foo->var = 'It works!';
$foo->bar(); // will echo 'It works!'
本文地址:http://php.askforanswer.com/ruheconglambdahanshufangwenfuduixiang.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!