php 將所有以_ _
(兩個下劃線)開頭的類方法保留為魔術方法。
public string __tostring ( void ):
當物件被當做string
使用時,這個方法會被自動呼叫。此方法必須返回乙個字串
<?php
class magic
}$obj = new magic();
echo $obj;//hello world!
?>
__invoke()
:當物件被當成方法呼叫時,這個方法會被自動呼叫。
<?php
class magic
public function __invoke($x)
}$obj = new magic();
$obj(10);//__invoke called with param 10
?>
__call():
當物件訪問不存在的方法名稱時,__call()
方法會被自動呼叫
__callstatic():
當物件訪問不存在的靜態方法名稱時,__callstatic()
方法會被自動呼叫
通過這兩個方法,同乙個方法的名稱的呼叫可以對應不同的方法實現
<?php
class magic
}$obj = new magic();
$obj->run("para1","para2");//obj去呼叫run方法,輸出:calling run with param: para1, para2
?>
在給不可訪問屬性賦值時,__set()
會被呼叫
讀取不可訪問屬性的值時,__get()
會被呼叫
<?php
class magic
}$obj = new magic();
echo $obj->classname."\n";//getting the property classname
?>
讀取不可訪問屬性的值時,__get()
會被呼叫
<?php
class magic
}$obj = new magic();
$obj->classname = 'magicclass';//setting the property classnameto value magicclass
?>
當對不可訪問屬性呼叫isset()
或empty()
時,__isset()
會被呼叫
當對不可訪問屬性呼叫unset()
時,__unset()
會被呼叫
<?php
class magic
}$obj = new magic();
echo '$obj->classname is set?'.isset($obj->classname)."\n";//__isset invoked $obj->classname is set?1
?>
php學習之四(魔術變數)
php 向它執行的任何指令碼提供了大量的預定義常量。不過很多常量都是由不同的擴充套件庫定義的,只有在載入了這些擴充套件庫時才會出現,或者動態載入後,或者在編譯時已經包括進去了。有八個魔術常量它們的值隨著它們在 中的位置改變而改變。例如 line 的值就依賴於它在指令碼中所處的行來決定。這些特殊的常量...
php魔術常量,魔術方法
魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...
invoke 魔術 PHP 魔術方法
php 魔術方法 構造方法 construct 析構方法 destruct get 與 set unset call 和 callstatic sleep 和 wakeup clone tostring invoke set state debuginfo construct 這個方法應該是最常用的...