ホームページ >バックエンド開発 >PHPチュートリアル >PHP でオブジェクトの真のコピーを作成するにはどうすればよいですか?

PHP でオブジェクトの真のコピーを作成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-03 08:28:10658ブラウズ

How Do I Create True Copies of Objects in PHP?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。