私は PHP を初めて使用するもので、マニュアル
のサンプル コードについて質問があります。最後の行 $assigned=$instance の結果について少し混乱しています。これはコピーですか? では、これら 2 つのオブジェクトは同じ内容ですが、アドレスが異なる 2 つのオブジェクトである必要があります。コピー後の割り当ては、$instance->var = '$assigned will have this value'; なぜ $assigned に影響するのでしょうか??
----- -解決策のアイデア----------------------
いわゆる価値の移転とは、単に渡すことだけを意味しますオブジェクトの値をターゲット オブジェクトにコピーすることはコピーと同等であり、システムはターゲット オブジェクトに対して同一のメモリ空間を再度開きます。
いわゆる参照とは、メモリ上のオブジェクトのアドレスを対象オブジェクトに渡すことを意味し、対象オブジェクトと元のオブジェクトを同じメモリ記憶空間に対応させることと等価です。このとき、対象オブジェクトを変更するとメモリ上のデータも変更されます。
価値移転と参照の違い
-----ソリューションアイデア----------------------
私の理解:
<br />class SimpleClass{<br /> var $test='test';<br />}<br /><br />//对象实例 分配内存地址为 1<br />$instance = new SimpleClass();<br />var_dump($instance);<br /><br />//复制对象实例的值 存入内存地址 2 存入的是SimpleClass类返回的同一个标识符的拷贝<br />//$instance = $assigned = new时返回的一个标识符id<br />$assigned = $instance;<br />var_dump($assigned);<br /><br />//引用传递 $reference 指向内存地址为 1<br />$reference = &$instance;<br />var_dump($reference);<br /><br />//改变了内存地址 1 <br />$instance->test= 'modify';<br />//因为是地址引用 所以$reference 也为null<br />$instance = null;<br />