php物件導向中的魔術方法

2022-08-01 09:30:11 字數 1477 閱讀 4256

在 php 中以兩個下劃線開頭的方法,__construct(), __destruct (), __call(), __callstatic(),__get(), __set(), __isset(), __unset (), __sleep(), __wakeup(), __tostring(), __set_state,() __clone() __autoload()等,被稱為"魔術方法"(magic methods)。注意:這些方法在類中定義

下面舉乙個例子:

class

magic

//析構函式,某個物件在被刪除,或者被銷毀,呼叫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物...