1. 程式人生 > >面向物件之魔術方法__get()、__set()和__call() 的用法

面向物件之魔術方法__get()、__set()和__call() 的用法

一、魔術方法
在PHP中,有很多兩個下劃線開頭的方法,如:__construct、__distruct、__clone(注意:這些單詞前面都是兩個下劃線),這些方法被稱為魔術方法。如果PHP呼叫這些方法,首先必須在類中定義,否則PHP不會執行為建立的魔術方法。
注意:魔術方法均用public關鍵字來修飾。
二、__get和__set方法
2-1、__set方法:
當程式試圖寫入一個不存在或不可見的成員變數時,PHP就會執行__set方法。
__set方法包含兩個引數,(變數的名稱和變數的值),兩個引數不可以省略。
2-2、__get方法:
當程式呼叫一個未定義或不可見的成員變數時,通過__get方法來讀取變數的值。
__get方法有一個引數,表示要呼叫的變數名。
例如:在這裡插入圖片描述


執行結果:
在這裡插入圖片描述
三、__call方法
__call方法的作用是:當程式試圖呼叫不存在或不可見的成員方法時,PHP會先呼叫__call方法來儲存方法名及其引數。
__call方法包含兩個引數,(方法名和方法引數),方法引數是以陣列的形式存在的。
例如:
在這裡插入圖片描述
執行結果:
在這裡插入圖片描述