PHP的魔術方法及異常
阿新 • • 發佈:2019-02-14
php的魔術方法,及每個魔術方法的作用
定義:所有以兩個下劃線開頭的類方法,被稱為"魔術方法"(Magic methods)。
1.__construct()
例項化物件時被呼叫,
當__construct和以類名為函式名的函式同時存在時, __construct將被呼叫,另一個不被呼叫。
2.__destruct()
當刪除一個物件或物件操作終止時被呼叫。
3.__call()
物件呼叫某個方法,
若方法存在,則直接呼叫;
若不存在,則會去呼叫__call函式。
4.__get()
讀取一個物件的屬性時,
若屬性存在,則直接返回屬性值;
若不存在,則會呼叫__get函式。
5.__set()
設定一個物件的屬性時,
若屬性存在,則直接賦值;
若不存在,則會呼叫__set函式。
6.__toString()
列印一個物件的時被呼叫。如echo $obj;或print $obj;
7.__clone()
克隆物件時被呼叫。如:$t=new Test();$t1=clone $t;
8.__sleep()
serialize之前被呼叫。若物件比較大,想刪減一點東東再序 列化,可考慮一下此函式。
9.__wakeup()
unserialize時被呼叫,做些物件的初始化工作。
10.__isset()
檢測一個物件的屬性是否存在時被呼叫。如:isset($c->name)。
11.__unset()
刪除某個變數
unset一個物件的屬性時被呼叫。如:unset($c->name)。
12.__set_state()
呼叫var_export時,被呼叫。用__set_state的返回值做為var_export的返回值。
13.__autoload()
例項化一個物件時,如果對應的類不存在,則該方法被呼叫。
14.__invoke()
當嘗試以呼叫函式的方式去呼叫物件,沒有定義則不存在,
定義:所有以兩個下劃線開頭的類方法,被稱為"魔術方法"(Magic methods)。
1.__construct()
例項化物件時被呼叫,
當__construct和以類名為函式名的函式同時存在時, __construct將被呼叫,另一個不被呼叫。
2.__destruct()
當刪除一個物件或物件操作終止時被呼叫。
3.__call()
物件呼叫某個方法,
若方法存在,則直接呼叫;
若不存在,則會去呼叫__call函式。
4.__get()
讀取一個物件的屬性時,
若屬性存在,則直接返回屬性值;
若不存在,則會呼叫__get函式。
5.__set()
設定一個物件的屬性時,
若屬性存在,則直接賦值;
若不存在,則會呼叫__set函式。
6.__toString()
列印一個物件的時被呼叫。如echo $obj;或print $obj;
7.__clone()
克隆物件時被呼叫。如:$t=new Test();$t1=clone $t;
8.__sleep()
serialize之前被呼叫。若物件比較大,想刪減一點東東再序 列化,可考慮一下此函式。
9.__wakeup()
unserialize時被呼叫,做些物件的初始化工作。
10.__isset()
檢測一個物件的屬性是否存在時被呼叫。如:isset($c->name)。
11.__unset()
刪除某個變數
unset一個物件的屬性時被呼叫。如:unset($c->name)。
12.__set_state()
呼叫var_export時,被呼叫。用__set_state的返回值做為var_export的返回值。
13.__autoload()
例項化一個物件時,如果對應的類不存在,則該方法被呼叫。
14.__invoke()
當嘗試以呼叫函式的方式去呼叫物件,沒有定義則不存在,