1. 程式人生 > >常見的幾種魔術變量

常見的幾種魔術變量

__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

class
Test{ 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__ 當前對象的方法名

常見的幾種魔術變量