82.PHPオブジェクトと参照


オブジェクトと参照
php 5のオブジェクトプログラミングでよく言及されるキーの1つは、「デフォルトではオブジェクトが参照によって伝達される」ことです.しかし、これは完全に正しいわけではありません.以下、いくつかの例を用いて説明する.
phpの参照は別名であり、2つの異なる変数の名前が同じ内容を指す.php 5では、オブジェクト変数はオブジェクト全体の値を保存しません.本物のオブジェクトコンテンツにアクセスするために識別子を保存するだけです.オブジェクトがパラメータとして渡され、結果として返されたり、別の変数に値が割り当てられたりします.別の変数は元の参照関係ではありませんが、同じ識別子のコピーが保存されています.この識別子は同じオブジェクトの本当の内容を指します.
Example#1参照とオブジェクト
<?php class A { public $foo = 1; } $a = new A; $b = $a; // $a ,$b            // ($a) = ($b) = <id> $b->foo = 2; echo $a->foo."
"
; $c = new A; $d = &$c; // $c ,$d // ($c,$d) = <id> $d->foo = 2; echo $c->foo."
"
; $e = new A; function foo($obj) { // ($obj) = ($e) = <id> $obj->foo = 2; } foo($e); echo $e->foo."
"
; ?>