PHPのクラスとオブジェクトで次の例を見つけました:基本ですが、バックグラウンドで何が起こっているのか理解できません。
ステートメントがあります:
すでに作成されているクラスのインスタンスを新しい変数に割り当てると、新しい変数は、割り当てられたオブジェクトと同じインスタンスにアクセスします。この動作は、インスタンスを関数に渡す場合と同じです。作成済みのオブジェクトのコピーは、クローンを作成することで作成できます。
これは、オブジェクトがデフォルトで参照によって渡されるという状態であると思います。したがってclone
、実際のコピーを作成する場合は、そうする必要があります。(PHPには浅いコピーはありません。はい、clone
デフォルトであります。)
次の例(上記のリンクからコピー)について考えてみます。
<?php
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
そこで言われているように、これは以下を出力します:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"] => string(30) "$assigned will have this value"
}
理解できない。
$assigned = $instance;
がデフォルトでオブジェクトに対する参照(エイリアス)による割り当てである場合、がに割り当てられている間に、その$assigned
オブジェクトがそのプロパティをSimpleClass
保持しているのはなぜですか。$var
string
NULL
$instance