首頁  >  文章  >  後端開發  >  引用 - PHP手冊筆記

引用 - PHP手冊筆記

WBOY
WBOY原創
2016-08-08 09:28:52813瀏覽

引用是什麼

PHP中的引用意味著,用不同的變數名稱存取相同變數內容,類似於Unix的檔案名稱和檔案本身(變數名稱是目錄條目,變數內容是檔案本身,即以不同的目錄條目存取相同檔案),可以看做Unix檔案系統中的硬連結。

檔案系統中的連結有兩種,一種稱為硬連結(Hard Link),另一種被稱為符號連結(Symbolic Link)。預設情況下,ln指令產生硬連結。硬連接指透過索引節點來進行的連接。在Linux的檔案系統中,儲存在磁碟分割區中的檔案不管是什麼型別都會給它指派一個編號,稱為索引節點號(InodeIndex)。在Linux中,多個檔案名稱指向同一索引節點是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止「誤刪」的功能。原因如上所述,因為對應該目錄的索引節點有一個以上的連接。只刪除一個連接並不影響索引節點本身和其它的連接,只有當最後一個連接被刪除後,檔案的資料塊及目錄的連接才會被釋放。也就是說,文件才會真正刪除。與硬連接相對應,Lnux系統中還有另一種連接,稱為符號連接(Symbilc Link),也稱為軟連接。軟連結檔案有點類似Windows的捷徑。它實際上是特殊文件的一種。在符號連接中,文件實際上是一個文字文件,其中包含的有另一個文件的位置資訊。

引用主要用來做三件事:

  • 指向同一內容
  • 用引用傳遞變數
  • 引用回傳

指向同一內容

引用允許允許用兩個變數指向同一個內容,如$a = & $b,意味著$a$b指向同一個變數。

如果對一個未定義的變數進行引用賦值、引用參數傳遞或引用返回,則會自動建立該變數。例如,下面的程式會自動建立變數$a

<code>function foo(&$var) {}
foo($a);</code>

自PHP 5起,new操作符自動回傳引用。

引用傳遞

用引用傳遞變量,可以透過下面的程式碼實現,foo函數中變數$var指向了和$a指向的同一內容。 。

<code><?php 
function foo(&$var) {
	$var++;
}
$a = 1;
foo($a);
echo $a;</code>

只有函數定義中有引用符號&,在函數呼叫時沒有引用符號&

引用回傳

要回傳引用,使用下面的語法。

<code><?php 
class foo {
	public $value = 42;
	public function & getValue() {
		return $this->value;
	}
}
$obj = new foo;
$myValue = & $obj->getValue();
$obj->value = 2;
echo $myValue;</code>

注意,引用返回和參數傳遞不同,函數定義和函數呼叫(指出返回的是一個引用,而不是通常的一個拷貝)這兩個地方都用&符號。

取消引用

unset()一個引用時,只是斷開了變數名稱和變數內容之間的綁定,變數內容不被銷毀。

引用定位

許多PHP的語法結構是透過引用機制實現的,例如global引用和$this指標。

當用global $var聲明一個變數時,實際上是建立了一個到全局變數的引用,和$var = & $GLOBALS['var']作用是相同的。在物件方法中,$this永遠是呼叫它的物件的參考。

(全文完)

以上就介紹了引用 - PHP手冊筆記,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn