引用-PHP手冊筆記
引用是什麼
PHP中的引用意味著,用不同的變數名訪問同一變數內容,類似於Unix的檔名和檔案本身(變數名是目錄條目,變數內容是檔案本身,即用不同的目錄條目訪問同一檔案),可以看做Unix檔案系統中的硬連結。
檔案系統中的連結有兩種,一種被稱為硬連結(Hard Link),另一種被稱為符號連結(Symbolic Link)。預設情況下,ln命令產生硬連結。硬連線指通過索引節點來進行的連線。在Linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號(InodeIndex)。在Linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線。只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案才會被真正刪除。與硬連線相對應,Lnux系統中還存在另一種連線,稱為符號連線(Symbilc Link),也叫軟連線。軟連結檔案有點類似於Windows的快捷方式。它實際上是特殊檔案的一種。在符號連線中,檔案實際上是一個文字檔案,其中包含的有另一檔案的位置資訊。
引用主要用來做三件事:
- 指向同一內容
- 用引用傳遞變數
- 引用返回
指向同一內容
引用允許允許用兩個變數指向同一個內容,如$a = & $b
,意味著$a
和$b
指向同一個變數。
如果對一個未定義的變數進行引用賦值、引用引數傳遞或引用返回,則會自動建立該變數。比如,下面的程式會自動建立變數$a
。
function foo(&$var) {}
foo($a);
自PHP 5起,new
操作符自動返回引用。
引用傳遞
用引用傳遞變數,可以通過下面的程式碼實現,foo
函式中變數$var
指向了和$a
指向的同一內容。。
<?php
function foo(&$var) {
$var++;
}
$a = 1;
foo($a);
echo $a;
只有函式定義中有引用符號&
,在函式呼叫時沒有引用符號&
。
引用返回
要返回引用,使用下面的語法。
<?php
class foo {
public $value = 42;
public function & getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = & $obj->getValue();
$obj->value = 2;
echo $myValue;
注意,引用返回和引數傳遞不同,函式定義和函式呼叫(指出返回的是一個引用,而不是通常的一個拷貝)這兩個地方都用&
符號。
取消引用
當unset()
一個引用時,只是斷開了變數名和變數內容之間的繫結,變數內容不被銷燬。
引用定位
許多PHP的語法結構是通過引用機制實現的,比如global
引用和$this
指標。
當用global $var
宣告一個變數時,實際上是建立了一個到全域性變數的引用,和$var = & $GLOBALS[`var`]
作用是相同的。在物件方法中,$this
永遠是呼叫它的物件的引用。
(全文完)
相關文章
- 函式-PHP手冊筆記函式PHP筆記
- 型別-PHP手冊筆記型別PHP筆記
- 型別 - PHP手冊筆記型別PHP筆記
- 基本語法-PHP手冊筆記PHP筆記
- 異常處理-PHP手冊筆記PHP筆記
- 預定義變數-PHP手冊筆記變數PHP筆記
- PHP 手冊 (類與物件) 學習筆記二:屬性PHP物件筆記
- PHP 手冊 (類與物件) 學習筆記三:類常量PHP物件筆記
- PHP 手冊 (類與物件) 學習筆記十:抽象類PHP物件筆記抽象
- PHP 手冊 (類與物件) 學習筆記一:基本概念PHP物件筆記
- PHP 手冊 (類與物件) 學習筆記七:物件繼承PHP物件筆記繼承
- 《Linux命令速查手冊》筆記Linux筆記
- PHP 手冊 (類與物件) 學習筆記四:類的自動載入PHP物件筆記
- PHP 手冊 (類與物件) 學習筆記六:訪問控制(可見性)PHP物件筆記
- PHP 手冊 (類與物件) 學習筆記八:範圍解析操作符 ( :: )PHP物件筆記
- PHP 手冊 (類與物件) 學習筆記九:Static(靜態)關鍵字PHP物件筆記
- c++筆記_引用C++筆記
- Java筆記:方法引用Java筆記
- PHP 手冊 (類與物件) 學習筆記五:建構函式和解構函式PHP物件筆記函式
- 阿里巴巴java開發手冊筆記阿里Java筆記
- PHP 引用PHP
- PHP-imap 使用參考手冊PHP
- PHP正規表示式完全手冊PHP
- 阿里巴巴Java開發手冊閱讀筆記阿里Java筆記
- React學習手冊-React執行機制筆記(二)React筆記
- PHP SPL 筆記PHP筆記
- PHP SPL筆記PHP筆記
- 阿里巴巴Android開發手冊V1.0.0隨手筆記阿里Android筆記
- 讀書筆記-----Java中的引用筆記Java
- C++ 學習筆記之 引用C++筆記
- [python學習手冊-筆記]004.動態型別Python筆記型別
- [python學習手冊-筆記]003.數值型別Python筆記型別
- python3學習筆記之 強引用和弱引用Python筆記
- Java中的四大引用筆記Java筆記
- php相關筆記PHP筆記
- PHP學習筆記PHP筆記
- PHP 學習筆記PHP筆記
- 閱讀《阿里巴巴Android開發手冊1.0.1》筆記阿里Android筆記