私はこのようなコードを持っています:
class Foo {
var $callbacks = array();
function __construct() {
$this->callbacks[] = function($arg) {
return $this->bar($arg);
};
}
function bar($arg) {
return $arg * $arg;
}
}
クロージャ内で$ thisを使用したいのですが、追加しようとしましたuse ($this)
が、このスローエラーは次のとおりです。
Cannot use $this as lexical variable
$this
これは、クラスインスタンス自体への参照内のクラスの明示的な予約変数であるため、使用できません。にコピーを作成し$this
、それをuse
言語構造に渡します。
class Foo {
var $callbacks = array();
function __construct() {
$class = $this;
$this->callbacks[] = function($arg) use ($class) {
return $class->bar($arg);
};
}
function bar($arg) {
return $arg * $arg;
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加