PHP では、特にオブジェクトのコピーに関して、オブジェクト処理メカニズムが謎に見えることがあります。真実を明らかにするために、よくある誤解を掘り下げてみましょう。
PHP 5 以降では、オブジェクトは本質的に参照によって渡されます。これは、関数内でオブジェクトに加えられた変更は、関数外の元のオブジェクトに影響を与えることを意味します。これは、オブジェクトのコピーが作成される値渡しとは異なります。
オブジェクトを別の変数に代入する単なる行為、 $c = $a で例示されるように、オブジェクトの新しいコピーは作成されません。両方の変数 $a と $c は、同じ基になるオブジェクトを参照します。
提供されたコード スニペットは、参照によるオブジェクト:
<?php class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; set_b($a); print $a->b; // Output: 'after' print $c->b; // Output: 'after' ?></p> <p>予想どおり、$a と $c の両方が 'after' を出力し、明らかになります。 set_b() 内で行われた変更が両方の変数に反映されることを確認します。</p> <p><h3>「clone」を使用した真のコピーの作成</h3></p> <p>オブジェクトに対して、PHP は「clone」演算子を提供します。この演算子を利用すると、元のオブジェクトから独立した新しいオブジェクトを作成できます。</p> <pre class="brush:php;toolbar:false">$objectB = clone $objectA;
この例では、$objectB は $objectA と同じクラスの別個のインスタンスになりますが、独自のインスタンスになります。独立した状態。
PHP ではオブジェクトが渡されます。他のすべてを除いて、参照により。 「クローン」オペレーターは、必要に応じてオブジェクトの真のコピーを作成する手段を提供します。これらの概念を理解することは、オブジェクトの予期しない動作を回避し、明確で保守可能なコードを確保するために重要です。
以上がPHP はオブジェクトの受け渡しとコピーをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。