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
),因此您将无法访问私有和受保护的成员.
归档时间: |
|
查看次数: |
4534 次 |
最近记录: |