PHPオブジェクトでは参照によって渡されるようです。代入演算子でさえ、オブジェクトのコピーを作成しているようには見えません。
簡単な、不自然な証明があります:
<?php
class A {
public $b;
}
function set_b($obj) { $obj->b = "after"; }
$a = new A();
$a->b = "before";
$c = $a; //i would especially expect this to create a copy.
set_b($a);
print $a->b; //i would expect this to show 'before'
print $c->b; //i would ESPECIALLY expect this to show 'before'
?>
どちらの印刷ケースでも「後」になります
では、$ aを参照ではなく値でset_b()に渡すにはどうすればよいですか?
(object) ((array) $objectA)
clone $objectA
またはを使用した場合よりも優れたパフォーマンスで同じ望ましい結果が得られる可能性がありますnew stdClass
。