Indirect modification of overloaded property Hoge::$fuga has no effect
的なエラーがでた。
__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() が呼ばれる。で、しかもその値はもちろん値返しされてるわけなので、それに代入とかしても全然意味ないよ、と言われている。
まあ、意外と分かりづらい且つ発生しにくいエラーかもしれないなあ。