范围解析:带有闭包调用的对象
Scope Resolution: objects with closure calls
今天我收到以下 php 错误:
Fatal error: Using $this
when not in object context.
非常简单。我正在尝试访问不在范围内的对象。
代码示例:
class foo{
function bar(){
array_walk($this->array,
function (&$v, $k) {
if('something'){
# code goes here...
}else{
$this->erorr_message = 'Fail'; // breaks in v5.3
}
}
);
if($this->error_message==''){
//do something
}
}
}
我了解到这在 5.3 中不起作用,但在 5.5 中有效。您能否向我展示进行此更改的 PHP 更新或向我解释为什么范围并不总是允许这样做?我想我明白是什么而不是为什么。
它就在 php 匿名函数的手册页上:
Changelog
Version Description
5.4.0 $this can be used in anonymous functions.
5.3.0 Anonymous functions become available.
http://php.net/manual/en/functions.anonymous.php
还有
PHP 5.4 - 'closure $this support'
今天我收到以下 php 错误:
Fatal error: Using
$this
when not in object context.
非常简单。我正在尝试访问不在范围内的对象。
代码示例:
class foo{
function bar(){
array_walk($this->array,
function (&$v, $k) {
if('something'){
# code goes here...
}else{
$this->erorr_message = 'Fail'; // breaks in v5.3
}
}
);
if($this->error_message==''){
//do something
}
}
}
我了解到这在 5.3 中不起作用,但在 5.5 中有效。您能否向我展示进行此更改的 PHP 更新或向我解释为什么范围并不总是允许这样做?我想我明白是什么而不是为什么。
它就在 php 匿名函数的手册页上:
Changelog
Version Description
5.4.0 $this can be used in anonymous functions.
5.3.0 Anonymous functions become available.
http://php.net/manual/en/functions.anonymous.php
还有
PHP 5.4 - 'closure $this support'