我想从封闭内引用一个对象的私有变量。下面的代码似乎工作,但它抱怨Fatal error: Cannot access self:: when no class scope is active in test.php on line 12
和Fatal error: Using $this when not in object context in test.php on line 20
。访问封闭内部的私有变量
任何想法如何使用闭包完成相同的结果,同时保持变量为私人并且无需使用辅助函数(打破私有变量的整体思想)。
class MyClass
{
static private $_var1;
private $_var2;
static function setVar1($value)
{
$closure = function() use ($value) {
self::$_var1 = $value;
};
$closure();
}
function setVar2($value)
{
$closure = function() use ($value) {
$this->_var2 = $value;
};
$closure();
}
}
MyClass::setVar1("hello"); //doesn't work
$myclass = new MyClass;
$myclass->setVar2("hello"); //doesn't work
嘿 - 山寨;-) – DMI 2010-09-15 22:53:20
@戴夫实际上,我是写之前,我看了你的答案。无论如何,你+1作为解决方案:p – Artefacto 2010-09-15 23:24:43
heh。快速的并行开发。感谢+1,并且以比我更加努力的方式返回实物! :-) – DMI 2010-09-15 23:31:09