的なエラーがでた。 __get() によって返される値は参照ないから変更したって意味ないよって言う事。 <?php class Hoge { private $a = array(); public function __get($name) { return $this->a[$name]; } public function __set($name, $value) { $this->a[$name] = $value; } } $hoge = new Hoge(); に対して、 $hoge->fuga = 1;的なことをした場合、これは、__set() が呼ばれるのはご存知のとおりだけど、例えば、 $hoge->fuga[1]['hoge'] = 1;などとしたら、配列アクセスされた時点で __get() が呼ばれる。で、しかもその値はもちろん値返しされてるわけなので、それに代入とか