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環境中產生...