php 物件導向之 魔術方法

2021-07-25 06:02:11 字數 1291 閱讀 3929

php 魔術方法

php 模式方法

描述(需要在類中定義魔術方法)

__construct()

__destruct()

__tostring()

當物件被當作string使用時,這個方法會被自動呼叫。如:

public function __tostring()

echo $myobj;

__invoke()

當物件被當成方法是,這個方法會自動被呼叫。如:

public function __invoke($x)

$myobj(4);

__call()

當物件訪問不存在的方法名稱是,__call()方法會自動呼叫

//第乙個引數是方法名,第二個引數是引數陣列

public function __call($name,$arguments)

這兩個方法在php裡面也被稱為方法的過載(overloading,不同於overwrite)通過這2個方法,同乙個方法的名稱的呼叫可以對應不同的方法實現。

__callstatic()

__當物件訪問不存在的靜態方法名稱是,__callstatic()方法會被自動呼叫(需要定義為static方法)

//第乙個引數是方法名,第二個引數是引數陣列

public static function __callstatic($name,$arguments)

__get()

讀取不可訪問屬性的值時,__get()會被呼叫

public function __get($name)

所謂不可訪問熟悉,實際上就是在呼叫某個屬性時發現這個熟悉沒有被定義(或private)這個時候不同的操作會觸發不同的魔術方法。

這幾個方法也被稱為屬性過載的魔術方法。

__set()

在給不可訪問屬性賦值時,__set()會被呼叫

//第乙個引數屬性名;第二個引數屬性值

public function __get($name,$value)

__isset()

當對不可訪問屬性呼叫isset()或empty()時,__isset()會被呼叫。

public function __isset($name)

__unset()

當對不可訪問屬性呼叫unset()時,__unset()會被呼叫。

__clone()

物件的複製(copy),而不是直接賦值

$jam1 =clone $jam;

而不是$jam1=$jam;

PHP物件導向 魔術方法

get name 觸發時機 當呼叫乙個不訪問的成員屬性的時候,會自動觸發,可以利用這個方法來完成對不可呼叫的屬性進行呼叫,但是不能設定值 set name,value 觸發時機 當給乙個不可訪問的成員屬性賦值的時候,會自動觸發這個方法,可以利用這個方法完成對不可以訪問的屬性進行賦值 isset na...

php筆記(10) 物件導向之魔術方法

當物件被當作字串輸出時,呼叫該方法。class people p1 new people echo p1 當物件被當作方法呼叫時,會呼叫該方法 class people p1 new people p1 1 當訪問物件的方法不存在時,將會呼叫該方法 class people p1 new peopl...

物件導向魔術方法之 str

型別判斷要使用type或isinstance,並不能通過判斷print輸出是否帶引號來判斷輸出值的型別。str 與repr 都是python中的內建函式,是直接用來格式化字串的函式 而 str 與 repr 是在類 物件 中對類 物件 本身進行字串處理。注意 repr 在互動式python環境中產生...