ホームページ  >  記事  >  バックエンド開発  >  PHP を初めて使用するのですが、マニュアルのサンプルコードについて質問があります。

PHP を初めて使用するのですが、マニュアルのサンプルコードについて質問があります。

WBOY
WBOYオリジナル
2016-06-13 12:21:01906ブラウズ

私は 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 />

マニュアルの説明: php5 では、オブジェクト変数はオブジェクト全体の値を保持しなくなりました。実際のオブジェクトのコンテンツにアクセスするには、識別子を保存するだけです。オブジェクトがパラメータとして渡されるか、結果として返されるか、または別の変数に割り当てられる場合、他の変数には元の変数との参照関係はありませんが、どちらも同じ識別子のコピーを格納し、オブジェクトの実際の内容を指します。同じオブジェクトです。
------解決策のアイデア----------------------
あなたのコードは古すぎるということです所定の場所にありません

$instance はオブジェクトです。 php5 以降、オブジェクトは参照によって渡されます
したがって、$assigned = $instance となり、
$assigned と $instance は同じオブジェクトを指します。一方のプロパティが変更されると、他方もそれに応じて変更されます

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