|
<?php class A { function A($i) { $this->value = $i; // 试着想明白为什么这里不需要引用 $this->b = new B($this); }
function createRef() { $this->c = new B($this); }
function echoValue() { echo "<br>","class ",get_class($this),': ',$this->value; } }
class B { function B(&$a) { $this->a = &$a; }
function echoValue() { echo "<br>","class ",get_class($this),': ',$this->a->value; } }
// 试着理解为什么这里一个简单的拷贝会在下面用 * // 标出来的行中产生预期之外的结果 $a =& new A(10); $a->createRef();
$a->echoValue(); $a->b->echoValue(); $a->c->echoValue();
$a->value = 11;
$a->echoValue(); $a->b->echoValue(); // * $a->c->echoValue();
/* 输出为: class A: 10 class B: 10 class B: 10 class A: 11 class B: 11 class B: 11 */ ?>
|