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
*/ |