跳至內容

PHP 程式設計/重寫與過載

來自華夏公益教科書

PHP 中的過載提供了一種動態“建立”屬性和方法的方式。這些動態實體透過可以在類中為各種操作型別建立的魔術方法進行處理。換句話說,在執行時建立屬性/方法被稱為屬性過載/方法過載。

屬性過載

[編輯 | 編輯原始碼]

在 PHP 中,屬性過載可以透過諸如 __set、__unset、__isset、__get 方法之類的魔術方法來完成。過載可以透過諸如 __call 和 __call_static 之類的魔術方法來完成。PHP 對“過載”的解釋與大多數面嚮物件語言不同。傳統上,過載提供了具有相同名稱但引數數量和型別不同的多個方法的能力。

範圍 返回型別 方法 引數 語法 額外說明
公有 __set 字串 $name , 混合 $value public void __set ( string $name , mixed $value ) 在寫入不可訪問屬性的資料時執行。
公有 混合 __get 字串 $name public mixed __get ( string $name ) 用於從不可訪問屬性讀取資料
公有 布林 __isset 字串 $name public bool __isset ( string $name ) 在對不可訪問屬性呼叫 isset() 或 empty() 時觸發
公有 __unset 字串 $name public void __unset ( string $name ) 在對不可訪問屬性使用 unset() 時呼叫。

方法過載

[編輯 | 編輯原始碼]

當我們嘗試呼叫 PHP 中不存在的方法時,__call() 會被呼叫,這樣我們就實現了方法過載。

語法 描述
public mixed __call ( string $name , array $arguments ) __call() 在物件上下文中呼叫不可訪問方法時觸發。
public static mixed __callStatic ( string $name , array $arguments ) __callStatic() 在靜態上下文中呼叫不可訪問方法時觸發。

在 OOP 中,重寫的含義是在子類中替換父類方法。或者用簡單的技術術語來說,方法重寫意味著改變方法的行為。在 OOP 中,重寫是您可以重新宣告父類方法在子類中的過程。因此,OOP 中重寫的基本含義是改變父類方法的行為。

通常,當您的父類有一些方法,但在子類中您想要具有不同行為的相同方法時,需要進行方法重寫。透過方法重寫,您可以完全改變它從父類中的行為。為了在 OOP 中實現方法重寫,我們通常在子類中建立相同的方法。


華夏公益教科書