php魔術方法與魔術變數、內建方法與內建變數

來源:互聯網
上載者:User
php內建變數了:DIRECTORY_SEPARATOR
DIRECTORY_SEPARATOR是一個返回跟作業系統相關的路徑分隔字元的php內建命令,在windows上返回\,而在linux或者類unix上返回/,就是這麼個區別,通常在定義包含檔案路徑或者上傳儲存目錄的時候會用到。
PHP 把所有以 __ (兩個底線)開頭的類方法當成魔術方法。所以你定義自己的類方法時,不要以   __ 為首碼。

1 、 __construct()
當執行個體化一個對象的時候,這個對象的構造方法將首先被調用;
我們知道 php5 物件模型和類名相同的函數是類的建構函式,那麼如果同時定義建構函式和 __construc() 方法的話, php5 會預設調用 __contruct() 而不會調用同類名函數,所以 __contruct() 作為類的預設建構函式;

2 、 __destruct()
解構函式會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。

3 、 __get(string $name)
當試圖讀取一個並不存在的屬性時被調用;如果試圖讀取一個對象並不存在的屬性的時候, php 就會給出錯誤的資訊。如果在類裡添加 __get 方法,並且我們可以用這個函數實作類別似 java 中的反射的各種操作。

4 、 __set(string $name, mixed $value)
給未定義的變數賦值時將被調用

5 、 __call(string $name, array $arguments)
當調用一個不可存取方法(如未定義,或者不可見)時, __call()   會被調用。
__callStatic( string $name, array $arguments )
當在靜態方法中調用一個不可存取方法(如未定義,或者不可見)時, __callStatic()   會被調用。

6 、 __toString()
當列印一個對象的時候被調用,這個方法類似於 java 的 toString 方法,當我們直接列印對象的時候回調這個函數。

7 、 __clone()
當對象被複製時調用。

8 、 __sleep()
serialize() 函數會檢查是否存在一個魔術方法   __sleep . 如果存在, __sleep() 方法會先被調用,   然後才執行序列化操作。這個功能可以用於清理對象,並返回一個包含對象中所有變數名稱的數組。如果該方法不返回任何內容,則 NULL 被序列化,導致   一個 E_NOTICE 錯誤。 __sleep 方法常用於提交未提交的資料,或類似的操作。同時,如果你有一些很大的對象,不需要儲存,這個功能就很好用。

9 、 __wakeup()
與 __sleep()  相反, unserialize() 會檢查是否存在一個 __wakeup 方法。如果存在,則會先調用   __wakeup 方法,預先準備對象資料。   __wakeup 經常用在還原序列化操作中,例如重建立立資料庫連接,或執行其它初始化操作。

10 、 __isset()
當對未定義的變數調用 isset()   或   empty() 時, __isset()   會被調用。

11 、 __unset()
unset 一個對象的屬性時被調用。如: unset($c->name) 。

12 、 __set_state()
調用 var_export 時,被調用。用 __set_state 的傳回值做為 var_export 的傳回值。

13 、 __autoload()
執行個體化一個對象時,如果對應的類不存在,則該方法被調用。簡單的說就是類的自動載入 ; 當你嘗試使用一個 PHP 沒有組織到的類 ,  它會尋找一個 __autoload 的全域函數 .  如果存在這個函數 ,PHP 會用一個參數來調用它 , 參數即類的名稱。

14 、 __invoke()
當嘗試以調用函數的方式調用一個對象時, __invoke   方法會被自動調用。

魔術常量 :
__LINE__  檔案中的當前行號。  
__FILE__  檔案的完整路徑和檔案名稱。如果用在被包含檔案中,則返回被包含的檔案名稱。自   PHP 4.0.2  起, __FILE__  總是包含一個絕對路徑(如果是符號串連,則是解析後的絕對路徑),而在此之前的版本有時會包含一個相對路徑。  
__DIR__  檔案所在的目錄。如果用在被包括檔案中,則返回被包括的檔案所在的目錄。它等價於   dirname(__FILE__) 。除非是根目錄,否則目錄中名不包括末尾的斜杠。(PHP 5.3.0 中新增)
__FUNCTION__  函數名稱( PHP 4.3.0  新加)。自   PHP 5  起本常量返回該函數被定義時的名字(區分大小寫)。在   PHP 4 中該值總是小寫字母的。  
__CLASS__  類的名稱( PHP 4.3.0  新加)。自   PHP 5  起本常量返回該類被定義時的名字(區分大小寫)。在   PHP 4  中該值總是小寫字母的。  
__METHOD__  類的方法名( PHP 5.0.0  新加)。返回該方法被定義時的名字(區分大小寫)。  
__NAMESPACE__  當前命名空間的名稱(大小寫敏感)。這個常量是在編譯時間定義的( PHP 5.3.0  新增)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.