程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP重載

PHP重載

編輯:PHP綜合

PHP所提供的"重載"(overloading)是指動態地"創建"類屬性和方法。我們是通過魔術方法(magic methods)來實現的。

當調用當前環境下未定義或不可見的類屬性或方法時,重載方法會被調用。本節後面將使用"不可訪問屬性(inaccessible properties)"和"不可訪問方法(inaccessible methods)"來稱呼這些未定義或不可見的類屬性或方法。

所有的重載方法都必須被聲明為 public

NOTE:PHP中的"重載"與其它絕大多數面向對象語言不同。傳統的"重載"是用於提供多個同名的類方法,但各方法的參數類型和個數不同。這些魔術方法的參數都不能通過引用傳遞。

屬性重載

public void __set ( string $name , mixed $value ) public mixed __get ( string $name ) public bool __isset ( string $name ) public void __unset ( string $name )

在給不可訪問屬性賦值時,__set() 會被調用。

讀取不可訪問屬性的值時,__get() 會被調用。

當對不可訪問屬性調用 isset() 或 empty() 時,__isset() 會被調用。

當對不可訪問屬性調用 unset() 時,__unset() 會被調用。

參數 $name 是指要操作的變量名稱。__set() 方法的 $value 參數指定了 $name 變量的值。

屬性重載只能在對象中進行。在靜態方法中,這些魔術方法將不會被調用。所以這些方法都不能被 聲明為 static。從 PHP 5.3.0 起, 將這些魔術方法定義為 static 會產生一個警告。

Note:因為 PHP 處理賦值運算的方式,__set() 的返回值將被忽略。類似的, 在下面這樣的鏈式賦值中,__get() 不會被調用:

 $a = $obj->b = 8; 

方法重載

public mixed __call ( string $name , array $arguments ) public static mixed __callStatic ( string $name , array $arguments )

在對象中調用一個不可訪問方法時,__call() 會被調用。

在靜態上下文中調用一個不可訪問方法時,__callStatic() 會被調用。

$name 參數是要調用的方法名稱。$arguments 參數是一個枚舉數組,包含著要傳遞給方法 $name 的參數。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved