PHP基礎之類和對象21——對象和引用
在php5 的對象編程經常提到的一個關鍵點是“默認情況下對象是通過引用傳遞的”。但其實這不是完全正確的。下面通過一些例子來說明。
php的引用是別名,就是兩個不同的變量名字指向相同的內容。在php5,一個對象變量已經不再保存整個對象的值。只是保存一個標識符來訪問真正的對象內容。 當對象作為參數傳遞,作為結果返回,或者賦值給另外一個變量,另外一個變量跟原來的不是引用的關系,只是他們都保存著同一個標識符的拷貝,這個標識符指向同一個對象的真正內容。
Example #1 引用和對象
<?php class A {public $foo = 1; } $a = new A; $b = $a; // $a ,$b都是同一個標識符的拷貝 // ($a) = ($b) = <id> $b->foo = 2; echo $a->foo.'n'; $c = new A; $d = &$c; // $c ,$d是引用 // ($c,$d) = <id> $d->foo = 2; echo $c->foo.'n'; $e = new A; function foo($obj) {// ($obj) = ($e) = <id>$obj->foo = 2; } foo($e); echo $e->foo.'n';?>
以上例程會輸出:
222
相關文章:
