考慮以下結構:PHP:存儲和/或通過參考
class B
{
private $_b;
private __constructor() { }
public function setValue($value)
{
$this->_b->setValue($value);
}
public static function load(&$__b)
{
$B = new B();
$B->_b = $__b;
return $B;
}
}
class A
{
private $_b;
public function getB()
{
return B::load($this->_b);
}
public function save()
{
$this->_b->save();
}
}
$_SESSION['a'] = new A();
下不起作用:
$b = $_SESSION['a']->getB();
$b->setValue('value');
$_SESSION['a']->save();
但是,下面做工作:
$_SESSION['a']->getB()->setValue('value');
$_SESSION['a']->save();
我知道這裏有人會看到有什麼不對,或者甚至不可能。
我添加了如何創建$ _SESSION ['a']'。這在之前做了工作,因爲它是使用引用創建的,所以引用可以工作。底層的'_b'就是所有需要引用的東西,類本身不需要。 – 2012-03-01 18:02:26
對不起,但是'$ a = new A(); $ b = $ a-> getB(); $ b-> setValue(「v」);'會導致致命錯誤'調用非對象方法'。 – rodneyrehm 2012-03-01 18:06:36