PHP基礎(chǔ)之類(lèi)和對(duì)象21——對(duì)象和引用
在php5 的對(duì)象編程經(jīng)常提到的一個(gè)關(guān)鍵點(diǎn)是“默認(rèn)情況下對(duì)象是通過(guò)引用傳遞的”。但其實(shí)這不是完全正確的。下面通過(guò)一些例子來(lái)說(shuō)明。
php的引用是別名,就是兩個(gè)不同的變量名字指向相同的內(nèi)容。在php5,一個(gè)對(duì)象變量已經(jīng)不再保存整個(gè)對(duì)象的值。只是保存一個(gè)標(biāo)識(shí)符來(lái)訪問(wèn)真正的對(duì)象內(nèi)容。 當(dāng)對(duì)象作為參數(shù)傳遞,作為結(jié)果返回,或者賦值給另外一個(gè)變量,另外一個(gè)變量跟原來(lái)的不是引用的關(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. Docker 容器健康檢查機(jī)制2. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫(huà)特效3. vue 獲取url參數(shù)、get參數(shù)返回?cái)?shù)組的操作4. vue開(kāi)發(fā)chrome插件,實(shí)現(xiàn)獲取界面數(shù)據(jù)和保存到數(shù)據(jù)庫(kù)功能5. php判斷一個(gè)請(qǐng)求是ajax請(qǐng)求還是普通請(qǐng)求的方法6. Android View 事件防抖的兩種方案7. php實(shí)現(xiàn)斷點(diǎn)續(xù)傳大文件示例代碼8. python構(gòu)造IP報(bào)文實(shí)例9. JavaScript實(shí)現(xiàn)可拖拽的進(jìn)度條10. python datetime時(shí)間格式的相互轉(zhuǎn)換問(wèn)題
