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.