PHPのオブジェクトコピー渡しと参照渡し

# 前のタイトルは「LinkedListを16行で書く(PHP4,PHP5互換版)」

配列の途中の要素を抜き取りたい用件があって、作ってみた。

class LinkedList {
    var $content = null;
    var $n = null;
    function setNext(&$obj) {
        $this->n =& $obj;
    }
    function &getNext() {
        return $this->n;
    }
    function setContent($content) {
        $this->content = $content;
    }
    function getContent() {
        return $this->content;
    }
}

PHP4とPHP5の一番の違いは、「オブジェクトをコピー渡しするか参照渡しするか」という超重大なミスっぽいところ。
以下のテストコードを走らせると、実行結果が異なる。

$a = new LinkedList();
$b = new LinkedList();
$b->setContent('bbbbb');
$a->setNext($b);

$c = $a->getNext();           // ←ここを =& にするとPHP4でもそれらしくなる
print $c->getContent()."\n";

$b->setContent('ggggg');
print $c->getContent()."\n";

PHP5のことだけを考えると、getNext() の前の & は要らないし、setNext() の & も要らない。
面倒くさいなぁ、PHP4。