【发布时间】:2011-04-12 22:50:17
【问题描述】:
我正在尝试从闭包中引用对象的私有变量。下面的代码似乎可以工作,但它抱怨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
【问题讨论】: