Tim*_*Tim 9 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();
Run Code Online (Sandbox Code Playgroud)
bin*_*yLV 11
你可以分配$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();
Run Code Online (Sandbox Code Playgroud)
值得注意的是,$obj它将被视为标准对象(而不是$this),因此您将无法访问私有和受保护的成员.