PHP でのオブジェクトのコピーの作成
PHP は、オブジェクト参照を独自の方法で処理します。一般的な考えに反して、オブジェクトは参照によって渡されます。これは、オブジェクトを別の変数に代入してもコピーは作成されないことを意味します。この動作は、割り当て後に元のオブジェクトを変更するときに明らかになります。
例:
次の PHP スニペットを考えてみましょう。
class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; // This line creates a reference to $a, not a copy set_b($a); print $a->b; // Output: 'after' print $c->b; // Output: 'after'
この中でたとえば、$a を $c に割り当てると、コピーではなく $a への参照が作成されます。 set_b() 関数が $a オブジェクトを変更すると、その変更は $a と $c の両方に反映されます。
解決策: Clone を使用する
PHP 5 以降オブジェクトの真のコピーを作成する clone オペレーターを提供します。 clone を使用すると、オブジェクトを値で渡し、元のオブジェクトへの変更がコピーに影響しないようにすることができます。
$objectB = clone $objectA; // Creates a copy of $objectA
重要な注意事項:
PHP ではオブジェクトだけが参照によって渡されることに言及する価値があります。プリミティブ データ型 (整数、文字列、ブール値など) は常に値によって渡されます。
以上がPHP でオブジェクトの真のコピーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。