常見的幾種魔術變量
阿新 • • 發佈:2017-11-12
__file__ 類名 系統常量 ron static var ets 權限 argument
如果在類中變量,方法被設置權限,外部想要設置,訪問可以使用參考以下:
__set和__get
class Tets{ private $a = ‘‘; public function __set($var,$val){ $this->$val = $val; } public function __get($var){ return $this->$var; } } $test = new Test(); $test->a = ‘abc‘; //如果沒有設置__set會報錯,因為外部不能調用private的變量var_dump($this->a);
__isset
class Test{ private $abc = ‘abc‘; public function __isset($var){ return isset($this->$var)?true:false; } } $test= new Test(); var_dump(isset($test->abc));
__unset
class Test{ private $abc = ‘abc‘; public function __unset($var){unset($this->$var); } } $test = new Test(); unset($test->abc);
__call
class Test{ public function __call($func,$arguments){ echo($func."<br/>"); print_r($arguments); } } $test = new Test(); $test->go(1,‘ok‘); //當實例化對象沒有找到方法,就會自動調用__call();
__callStatic
classTest{ public static function __callStatic($func,$arguments){ echo($func."<br/>"); print_r($arguments); } } Test::go(1,‘ok‘); //沒有找到類方法就自動調用__callStatic()
__invoke
class Test{ public function __invoke($arg){ var_dump($arg); } } $test = new Test(); $test(‘go....‘); //直接將實例化的對象當做函數來執行就用__invoke()
__toString
class Test{ public function __toString(){ return "hello;;;"; } } $test = new Test(); echo $test; //直接打印實例化對象,就可以使用__toString
其他常見魔術變量
__clone() 當對象被克隆時,被調用
__construct() 當實例化一個對象的時候,這個對象的這個方法首先被調用。
__destruct() 當刪除一個對象或對象操作終止的時候,調用該方法。
系統常量
__FILE__ 當前文件名
__LINE__ 當前行數
__FUNCTION__ 當前函數名
__CLASS__ 當前類名
__METHOD__ 當前對象的方法名
常見的幾種魔術變量