PHP基礎(chǔ)之類和對(duì)象21——對(duì)象和引用
在php5 的對(duì)象編程經(jīng)常提到的一個(gè)關(guān)鍵點(diǎn)是“默認(rèn)情況下對(duì)象是通過引用傳遞的”。但其實(shí)這不是完全正確的。下面通過一些例子來說明。
php的引用是別名,就是兩個(gè)不同的變量名字指向相同的內(nèi)容。在php5,一個(gè)對(duì)象變量已經(jīng)不再保存整個(gè)對(duì)象的值。只是保存一個(gè)標(biāo)識(shí)符來訪問真正的對(duì)象內(nèi)容。 當(dāng)對(duì)象作為參數(shù)傳遞,作為結(jié)果返回,或者賦值給另外一個(gè)變量,另外一個(gè)變量跟原來的不是引用的關(guān)系,只是他們都保存著同一個(gè)標(biāo)識(shí)符的拷貝,這個(gè)標(biāo)識(shí)符指向同一個(gè)對(duì)象的真正內(nèi)容。
Example #1 引用和對(duì)象
<?php class A {public $foo = 1; } $a = new A; $b = $a; // $a ,$b都是同一個(gè)標(biāo)識(shí)符的拷貝 // ($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';?>
以上例程會(huì)輸出:
222
相關(guān)文章:
1. Redis Java Lettuce驅(qū)動(dòng)框架原理解析2. Python中Anaconda3 安裝gdal庫(kù)的方法3. Python自動(dòng)化之定位方法大殺器xpath4. python用zip壓縮與解壓縮5. JAVA如何轉(zhuǎn)換樹結(jié)構(gòu)數(shù)據(jù)代碼實(shí)例6. python公司內(nèi)項(xiàng)目對(duì)接釘釘審批流程的實(shí)現(xiàn)7. Notepad++如何配置python?配置python操作流程詳解8. Python 簡(jiǎn)介9. Python操作Excel工作簿的示例代碼(*.xlsx)10. Python importlib模塊重載使用方法詳解
