php - 如何将对象上下文传递给匿名函数?

标签 php scope anonymous-function

有没有办法将对象上下文传递给匿名函数而不$this作为参数传递?

class Foo {
    function bar() {
        $this->baz = 2;
        # Fatal error: Using $this when not in object context
        $echo_baz = function() { echo $this->baz; };
        $echo_baz();
    }
}
$f = new Foo();
$f->bar();

最佳答案

您可以将 $this 分配给某个变量,然后在定义函数时使用 use 关键字将此变量传递给函数,但我不确定它是否是更容易使用。无论如何,这是一个例子:

class Foo {
    function bar() {
        $this->baz = 2;
        $obj = $this;
        $echo_baz = function() use($obj) { echo $obj->baz; };
        $echo_baz();
    }
}
$f = new Foo();
$f->bar();

值得注意的是 $obj 将被视为标准对象(而不是 $this),因此您将无法访问 private 和 protected成员。

关于php - 如何将对象上下文传递给匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330602/

相关文章:

VB.NET 变量范围

css - 用于在外部范围内计算变量时,将忽略CSS范围内的自定义属性

python - 还原 'global <var>' 语句

javascript - 匿名函数中的对象

string - 将匿名函数扩展为字符串

javascript - 如何在 jquery 中删除 onclick 和再次点击值时获取值?

php - 如何在php中回显不同的背景颜色

php - 为所选评论生成日期

php - PHP 中的 HTML 样式不遵循 CSS

javascript - 如何描述传递的匿名函数的参数?