gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:11:14 24 4
gpt4 key购买 nike

有没有办法将对象上下文传递给匿名函数而不$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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com