1、php把所有」__」開頭的方法當做魔術方法,所以任何自定義的方法都不能是」__」開頭
php提供的過載,是指動態的建立屬性或方法。過載是通過魔術方法來實現的。這些魔術方法的引數不能飲用傳遞,__get(),__set(),__isset(),__unset(),實現類屬性過載。
2、當訪問類中不可訪問的屬性時,將呼叫__get()方法
3、當訪問類中不可訪問的屬性時,根據不同的情況會呼叫__get(),__set(),__isset(),__unset(),其中當訪問屬性 時,使用函式isset()或empty()時,將呼叫__isset()方法使用unset()函式時,將呼叫__unset()方法。
4、這四個方法不能使用static關鍵詞定義,在php5.3.0後,乙個warning級別的警告將發生,當使用static方法定義這4個方法。
5、何謂不可訪問的屬性:(1)類中沒有的屬性,(2)私有變數在類外被訪問。方法過載,通過__call()和__callstatic()來實 現,兩者的區別是乙個上下文環境是否是靜態方法,後者在呼叫不可訪問的靜態方法時會被呼叫。__callstatic()是在php5.3.0中才被添 加。
6、__sleep()和__wakeup()
serialize()序列化時,會先檢查是否存在__sleep()函式,如果存在,則先呼叫__sleep(),返回乙個包含所有變數名稱的陣列,如果該方法不返回任何內容,則null被序列化,並產生乙個notice級別的錯誤。
__wakeup()方法和__sleep()相反,在呼叫unserialize()時被呼叫
7、__tostring(),讓乙個類決定它如何轉換成字串,在php5.2.0之前,這個方法只能結合echo或print方法生效,php5.2.0之後,可以結合printf()修飾,但修飾的時候也不能用類似%d之類的非字元修飾符。
8、當嘗試以呼叫函式的方式呼叫物件時,將出發這個函式,只在php5.3之後生效。
9、__set_state()靜態方法,當呼叫var_export()的時候,才會呼叫這個靜態方法,php5.1.0之後生效。唯一引數是接收乙個陣列。
10、__construct()和__destruct(),建構函式和析構函式,建構函式主要用於類的初始化,析構函式在某個物件的所有引用都 刪除後或者物件被顯示的銷毀時執行。在析構函式中不允許丟擲異常,否則會出發乙個fatal error,析構函式在指令碼結束時呼叫,此時所有的http header都已經發出.
11、__clone(),物件複製,此方法不能直接被呼叫,必須通過clone關鍵字顯示呼叫
**://例項化物件時,會呼叫物件的__construct方法
$obj = new object();
//給物件不存在的屬性賦值時,會呼叫物件的__set方法czgztaddl
$obj->title = "hello";
//使用物件不存在的屬性時,會呼叫物件的__get方法
echo $obj->title;
//呼叫物件不存在的方法時,會呼叫物件的__call方法
$obj->test("hello",123,567);
//呼叫不存在的類靜態方法時,會呼叫類的__callstatic方法
object::czgztaddlstaticmethod("static","not foundczgztaddl method");
//直接輸出物件時,會呼叫物件的__tostring方法
echo $obj;
//將乙個物件當作函式一樣使用時,會呼叫物件的__invoke方法
echo $obj("test");
//轉殖物件時,會呼叫物件的__clone方法
$obj2 = clone $obj;
//判斷物件屬性是否存在時,會呼叫物件的__isset方法
var_dump(isset($obj->aaa));
//銷毀物件屬性時,會呼叫物件的__unset方法
unset($obj->aaa);
class object
function __set($name, $value)
function __get($name)
function __call($name, $arguments)
static function __callstatic($name, $arguments)
function __tostring()
function __invoke($arguments)
function __clone()
function __isset($name)
function __unset($name)
function __destruct()
}
PHP魔術方法彙總
魔術方法是php物件導向中特有的特性。它們在特定的情況下被觸發,都是以雙下劃線開頭,在此做了下總結,向大家分享下 1.construct,destruct constuct構建物件的時被呼叫 destruct明確銷毀物件或指令碼結束時被呼叫 2.get,set set當給不可訪問或不存在屬性賦值時被...
PHP 魔術方法彙總
魔術方法 construct destruct call callstatic get set isset unset sleep wakeup tostring invoke set state clone 和 debuginfo 等方法在 php 中被稱為 魔術方法 magic methods ...
PHP中的常用魔術方法
魔術方法 是指某些情況下,會自動呼叫的方法,稱為魔術方法 php物件導向中,提供了這幾個魔術方法,他們的特點都是 以雙下劃線 開頭的 construct 構造方法 destruct 析構方法 clone 轉殖方法 當物件被格隆時,將會自動呼叫 例 class human lisi new human...