【发布时间】:2018-08-16 00:24:28
【问题描述】:
我想访问 $a 对象方法 myMethod() 以及覆盖函数内的所有 $a 对象属性。我该怎么做?非常感谢您的帮助。
$a = new A('property');
$a->testFunc = Closure::bind(function() {
// here the object scope was gone...
$a->myMethod();
$this->var = "overridden";
}, $a);
【问题讨论】:
-
在函数内部声明$a全局。
-
您也可以在定义函数时使用
use关键字。function() use ($a) { ... }。这将包含函数范围内的变量,而不使其成为全局变量。 -
@KarloKokkak 此外,
global $a仅在您处于全局范围内时才有效。如果这已经在另一个函数的范围内,则必须在两个范围内定义$aglobal(首先将其提升到全局,然后在全局后访问它)。无论如何,global被认为是不好的做法。