在 php 中以兩個下劃線開頭的方法,__construct(), __destruct (), __call(), __callstatic(),__get(), __set(), __isset(), __unset (), __sleep(), __wakeup(), __tostring(), __set_state,() __clone() __autoload()等,被稱為"魔術方法"(magic methods)。注意:這些方法在類中定義
下面舉乙個例子:
classmagic
//析構函式,某個物件在被刪除,或者被銷毀,呼叫exit()後,指令碼關閉時被呼叫
public
function
__destruct()
//當給乙個不可訪問或者不存在的屬賦值時候被呼叫
public
function __set($name,$value
)
//讀取不可訪問或者不存在屬性時被呼叫
public
function __get($name
)
//呼叫不可訪問或不存在的方法是被呼叫
public
function __call($name,$arguments
)
//呼叫不可訪問或不存在的靜態方法是被呼叫
static
public
function __callstatic($name,$arguments
)
//呼叫不可訪問或者不存在的屬性呼叫isset()或者empty()時被呼叫
public
function __isset($name)}
$obj = new
magic();
$obj->not_exist_property = test; //
__set()被調echo $m->not_exist_property;//__get()被呼叫
$obj->not_exist_property;
echo
$obj->test;
__get,__set
1. 從乙個難以訪問的屬性讀取資料的時候 __get() 方法被呼叫
2. 向乙個難以訪問的屬性賦值的時候 __set() 方法被呼叫
3. 難以訪問包括:(1)私有屬性,(2)沒有初始化的屬性
4. __isset() __unset() 也類似
__call,__callstatic
__call呼叫不可訪問或不存在的方法時被呼叫
__callstatic呼叫不可訪問或不存在的靜態方法時被呼叫
__construct,__destruct
__constuct構建物件的時被呼叫;
__destruct明確銷毀物件或指令碼結束時被呼叫;
PHP物件導向 魔術方法
get name 觸發時機 當呼叫乙個不訪問的成員屬性的時候,會自動觸發,可以利用這個方法來完成對不可呼叫的屬性進行呼叫,但是不能設定值 set name,value 觸發時機 當給乙個不可訪問的成員屬性賦值的時候,會自動觸發這個方法,可以利用這個方法完成對不可以訪問的屬性進行賦值 isset na...
php 物件導向之 魔術方法
php 魔術方法 php 模式方法 描述 需要在類中定義魔術方法 construct destruct tostring 當物件被當作string使用時,這個方法會被自動呼叫。如 public function tostring echo myobj invoke 當物件被當成方法是,這個方法會自動...
PHP中的物件導向OOP中的魔術方法
一 什麼是魔術方法 php為我們提供了一系列用 開頭的函式,這些函式無需自己手動呼叫,會在合適的時機自動呼叫,這類函式稱為魔術函式。例如 function construct 在new乙個新物件時自動呼叫此函式 二 php中都有那些魔術方法,以及它們的作用 1.construct 建構函式,new物...