php中的常用魔術方法彙總

2022-10-06 09:45:08 字數 2343 閱讀 5241

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...