考虑以下结构: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