PHP:如何将实例变量传递给闭包?

恶毒的

如果要在类中使用闭包,如何从该类中传递实例变量?

class Example {
    private $myVar;
    public function test() {
        $this->myVar = 5;
        $func = function() use ($this->myVar) { echo 'myVar is: ' . $this->myVar; };

        // The next line is for example purposes only if you want to run this code.
        // $func is actually passed as a callback to a library, so I don't have
        // control over the actual call.
        $func();
    }
}
$e = new Example();
$e->test();

PHP不喜欢此语法:

PHP Fatal error:  Cannot use $this as lexical variable in example.php on line 5

如果起飞,$this->则找不到变量:

PHP Notice:  Undefined variable: myVar in example.php on line 5

如果您use (xxx as $blah)在某些地方按照建议使用,则无论是否使用,语法似乎都是无效的$this

PHP Parse error:  syntax error, unexpected 'as' (T_AS), expecting ',' or ')' in example.php on line 5

有没有办法做到这一点?我可以使其正常工作的唯一方法是使用狡猾的解决方法:

$x = $this->myVar;
... function() use ($x) { ...
费利克斯·克林

如果您使用的是PHP 5.4或更高版本,则可以$this在闭包内部直接使用

$func = function() {
  echo 'myVar is: ' . $this->myVar;
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将变量传递给闭包

来自分类Dev

如何将闭包作为变量传递?

来自分类Dev

将具体实例传递给需要协议参数的闭包

来自分类Dev

如何将变量传递给不是类实例的事件?

来自分类Dev

如何将变量移出闭包?

来自分类Dev

Groovy / Spock错误!当将变量传递给闭包时

来自分类Dev

Swift:如何将闭包参数从类方法传递给类中的函数

来自分类Dev

如何将JS变量传递给PHP变量

来自分类Dev

如何将 js 变量传递给 php 变量?

来自分类Dev

如何从输入字段将值传递给javascript闭包

来自分类Dev

如何将smarty变量传递给php函数?

来自分类Dev

如何将PHP变量传递给angular js?

来自分类Dev

如何将PHP变量传递给JavaScript?

来自分类Dev

如何将值从JavaScript函数传递给PHP变量?

来自分类Dev

如何将jquery变量传递给php

来自分类Dev

如何将php变量传递给模态窗口

来自分类Dev

如何将php值传递给脚本变量

来自分类Dev

如何将php数组值传递给javascript变量

来自分类Dev

如何将php变量传递给javascript?

来自分类Dev

如何将$ this绑定到在PHP 5.4中作为方法参数传递的闭包?

来自分类Dev

Swift:如何将闭包作为函数参数传递

来自分类Dev

将参数传递给函数闭包

来自分类Dev

将闭包传递给递归函数

来自分类Dev

将Cython的闭包传递给C ++

来自分类Dev

Jenkins/Groovy:如何将命名参数和闭包传递给同一个方法?

来自分类Dev

如何将变量传递给$ timeout

来自分类Dev

如何将变量传递给cpack?

来自分类Dev

如何将变量传递给getattr

来自分类Dev

如何将变量传递给setInterval?