PHP中返回引用類型的方法
返回引用,在定義和調(diào)用的時(shí)候 & 都不可以省略。
這是個(gè)比較容易混淆的概念,如果不是出于某些特殊的原因,建議還是不要使用。
說他很容易混,是因?yàn)?Reference 在 PHP5 中的變化,造成其在 PHP4/PHP5 中表現(xiàn)的行為差異比較大。
舉個(gè)例子說明:
<?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 上面,也就是說 $colorRef 和 $color 兩個(gè)變量是指向同一個(gè)值了。當(dāng)改變其中一個(gè)值時(shí),另一個(gè)也會(huì)跟著變化。
如果 $color 是一個(gè)數(shù)組,也是一樣的,上面的代碼在 PHP4/5 的任意版本中,表現(xiàn)行為都是一樣的。
當(dāng) $color 是一個(gè) Object 的時(shí)候,問題就出現(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è)特性來“優(yōu)化”程序。
有問題看看手冊(cè)大部分時(shí)候都可以找到答案:
相關(guān)文章
php實(shí)現(xiàn)用于刪除整個(gè)目錄的遞歸函數(shù)
這篇文章主要介紹了php實(shí)現(xiàn)用于刪除整個(gè)目錄的遞歸函數(shù),涉及php遞歸算法與目錄操作技巧,需要的朋友可以參考下2015-03-03
php實(shí)現(xiàn)敏感關(guān)鍵詞過濾的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何通過php實(shí)現(xiàn)關(guān)鍵詞過濾,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,有需要的小伙伴可以參考下2023-11-11
PHP數(shù)據(jù)分析引擎計(jì)算余弦相似度算法示例
這篇文章主要介紹了PHP數(shù)據(jù)分析引擎計(jì)算余弦相似度算法,結(jié)合具體實(shí)例形式分析了php計(jì)算余弦相似度的操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-08-08
php 批量生成html,txt文件的實(shí)現(xiàn)代碼
本篇文章是對(duì)使用php批量生成html,txt文件的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
joomla jce editor 解決上傳中文名文件失敗問題
要么上傳失敗,要么傳上去了中文名不能被web訪問,研究了下JCE的源碼,改掉保存文件名的方式,使用純數(shù)字來作為文件名,具體修改如下,遇到類型情況的朋友可以參考下哈2013-06-06
關(guān)于IIS php調(diào)用com組件的權(quán)限問題
Word的對(duì)象庫(kù)文件“MSWORD.OLB”(word 2000為MSWORD9.OLB)(這是針對(duì)老版本的情況,在用vs.net2005的時(shí)候,直接在引用對(duì)話框中,在com組件里找到對(duì)word的庫(kù)文件的引用就可以了,文件名好像是一樣的2012-01-01
php設(shè)計(jì)模式 Chain Of Responsibility (職責(zé)鏈模式)
為解除請(qǐng)求的發(fā)送者和接收者之間的耦合,而使用多個(gè)對(duì)象都用機(jī)會(huì)處理這個(gè)請(qǐng)求,將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它2011-06-06
phpStudy在運(yùn)行PHP文件時(shí)出現(xiàn)中文亂碼的有效解決方法
在使用phpStudy進(jìn)行PHP開發(fā)時(shí),經(jīng)常會(huì)遇到中文顯示亂碼的問題,這不僅影響開發(fā)效率,還可能導(dǎo)致網(wǎng)站顯示異常,本文將詳細(xì)介紹解決phpStudy中文亂碼的有效方法,需要的朋友可以參考下2024-10-10

