揮発性のメモ2

http://d.hatena.ne.jp/iww/

オブジェクトは参照渡し

ずっと実体渡しだと思いこんでた。 無駄な&がいっぱいあるわ・・・

<?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
)

意図としては 実体コピーして、コピーをいじってもオリジナルはへーき というつもりのコード。
しかしオブジェクトのコピーは発生しない(参照)ので、オリジナルが書き換えられる。 これ地味にやばい誤解してたな。