你可能真的不想这样做,因为这将是一个噩梦调试,但似乎是可能的。关键是在构造函数中通过引用分配的部分。
$GLOBALS = array(
'MyNumber' => 1
);
class Foo {
protected $glob;
public function __construct() {
global $GLOBALS;
$this->glob =& $GLOBALS;
}
public function getGlob() {
return $this->glob['MyNumber'];
}
}
$f = new Foo;
echo $f->getGlob() . "\n";
$GLOBALS['MyNumber'] = 2;
echo $f->getGlob() . "\n";
输出将是
1
2
这表明它是通过引用分配的,而不是值。
正如我所说,这将是一个噩梦调试,所以你真的不应该这样做。阅读encapsulation的维基百科文章;基本上,您的对象应该理想地管理自己的数据和修改数据的方法;甚至公共财产一般都是呃,一个坏主意。