PHP中返回引用類型的方法
返回引用,在定義和調(diào)用的時(shí)候 & 都不可以省略。
這是個(gè)比較容易混淆的概念,如果不是出于某些特殊的原因,建議還是不要使用。
說(shuō)他很容易混,是因?yàn)?Reference 在 PHP5 中的變化,造成其在 PHP4/PHP5 中表現(xiàn)的行為差異比較大。
舉個(gè)例子說(shuō)明:
<?php
$color = 'YellowGreen';
function &getRef() {
global $color;
return $color;
}
function getCopy() {
global $color;
return $color;
}
$colorRef = &getRef();
$colorRef = 'Blue';
//$colorCopy = getCopy();
//$colorCopy = 'Black';
var_dump($color);
var_dump($colorRef);
//var_dump($colorCopy);
運(yùn)行一遍上面的代碼,差不多就明白了,使用 &getRef() 將把 $colorRef 綁定到 $color 上面,也就是說(shuō) $colorRef 和 $color 兩個(gè)變量是指向同一個(gè)值了。當(dāng)改變其中一個(gè)值時(shí),另一個(gè)也會(huì)跟著變化。
如果 $color 是一個(gè)數(shù)組,也是一樣的,上面的代碼在 PHP4/5 的任意版本中,表現(xiàn)行為都是一樣的。
當(dāng) $color 是一個(gè) Object 的時(shí)候,問(wèn)題就出現(xiàn)了。
PHP4 中 getCopy 仍然會(huì)返回一個(gè)復(fù)制的 Object;&getRef() 返回引用。
PHP5 中就有點(diǎn)另類了,
最新的 PHP5.2,行為和 PHP4 一樣,getCopy() 返回復(fù)制,&getRef() 返回引用。
但是某些的 PHP5 的版本這里稍微有些不同,比如 PHP5.1.6,表現(xiàn)為 getCopy() 和 &getRef() 都是引用。
這里 getCopy() 和 &getRef() 是兩個(gè)全局函數(shù),如果放到類里面成為類的 Member functions,那又會(huì)是另外一番景象……
PS:返回 References 并不會(huì)提高性能,有時(shí)候反而降低性能,所以不要想當(dāng)然的使用這個(gè)特性來(lái)“優(yōu)化”程序。
有問(wèn)題看看手冊(cè)大部分時(shí)候都可以找到答案:
相關(guān)文章
php優(yōu)化及高效提速問(wèn)題的實(shí)現(xiàn)方法
下面是phper在實(shí)際編寫中,發(fā)現(xiàn)的一些問(wèn)題,其它我們的好多代碼,需要優(yōu)化,很多程序都是可以再提速的2008-10-10php轉(zhuǎn)換上傳word文件為PDF的方法【基于COM組件】
這篇文章主要介紹了php轉(zhuǎn)換上傳word文件為PDF的方法,結(jié)合實(shí)例形式分析了php基于COM組件針對(duì)word文件的格式轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2019-06-06php curl發(fā)送請(qǐng)求實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于php curl發(fā)送請(qǐng)求詳細(xì)教程以及相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。2019-08-08關(guān)于php 高并發(fā)解決的一點(diǎn)思路
涉及搶購(gòu)、秒殺、抽獎(jiǎng)、搶票等活動(dòng)時(shí),為了避免超賣,那么庫(kù)存數(shù)量是有限的,但是如果同時(shí)下單人數(shù)超過(guò)了庫(kù)存數(shù)量,就會(huì)導(dǎo)致商品超賣問(wèn)題。那么我們?cè)趺磥?lái)解決這個(gè)問(wèn)題呢,我的思路如下2017-04-04php檢測(cè)數(shù)組長(zhǎng)度函數(shù)sizeof與count用法
這篇文章主要介紹了php檢測(cè)數(shù)組長(zhǎng)度函數(shù)sizeof與count用法,實(shí)例分析了count的用法,并對(duì)sizeof函數(shù)進(jìn)行了詳盡的分析說(shuō)明,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11php實(shí)現(xiàn)的支持imagemagick及gd庫(kù)兩種處理的縮略圖生成類
這篇文章主要介紹了php實(shí)現(xiàn)的支持imagemagick及gd庫(kù)兩種處理的縮略圖生成類,包含了用法的詳細(xì)描述,非常實(shí)用,需要的朋友可以參考下2014-09-09