ずっと実体渡しだと思いこんでた。 無駄な&がいっぱいあるわ・・・
<?php class a{ public $a; } function b($A){ $A->a = "piyo"; } $A = new a; $A->a = "hoge"; print_r($A); b($A); print_r($A);
a Object
(
[a] => hoge
)
a Object
(
[a] => piyo
)<?php class a{ public $a; } function b($A){ $A->a = "piyo"; } $A = new a; $A->a = "hoge"; print_r($A); $B = $A; b($B); print_r($A);
a Object
(
[a] => hoge
)
a Object
(
[a] => piyo
)意図としては 実体コピーして、コピーをいじってもオリジナルはへーき というつもりのコード。
しかしオブジェクトのコピーは発生しない(参照)ので、オリジナルが書き換えられる。 これ地味にやばい誤解してたな。