PHP常用的魔術方法及規則


1. __construct 具有構造函數的類會在每次創建新對象時先調用此方法;初始化工作執行。
2. __desstruct 對象的所有引用都被刪除或者當對象被顯式銷毀時執行。
3.__call()在對象中調用一個不可訪問方法時,__call() 會被調用。
4.__callStatic()在靜態上下文中調用一個不可訪問方法時,__callStatic() 會被調用。
5.__set() 在給不可訪問的屬性賦值時調用
6.__get() 讀取不可訪問的屬性值是自動調用
7.__isset() 當對不可訪問的私有屬性使用isset或empty時自動調用
8.__unset() 當對不可訪問的私有屬性使用unset時;自動調用
9.__toString()當一個類的實例對象;被當成一個字符串輸出時調用

 

<?php
class a
{

    private $name = 'wang san';
    
    //設置私有屬性
    public function __set($a,$val){
        echo "屬性:'$a' 值: '$val' 在直接設置私有屬性值的時候,自動調用了這個__set()方法為私有屬性賦值\n"; 
        $this->$a = $val;
    }
    //獲取私有屬性
    public function __get($a){
        echo "屬性:'$a' 在直接獲取私有屬性值的時候,自動調用了這個__get()方法\n"; 
        return $this->$a;
    }
    /**  當對不可訪問屬性調用 isset() 或 empty() 時,__isset() 會被調用。*/
    public function __isset($name) 
    {
        echo "是否設置 '$name' 值?\n";
        return isset($this->$name);
    }
    /**  當對不可訪問屬性調用 unset()會被調用。*/
    public function __unset($name) 
    {
        echo "銷毀私有變量 '$name' 時調動";
        unset($this->$name);
    }
    /* 方法用於一個類被當成字符串時應怎樣回應 */
    public function __toString() {
        return $this->name;
    }
}

$test = new a();

echo $test.'<br>'; // 輸出:wang san __toString()方法用於一個類被當成字符串時應怎樣回應

$test->name = "中國人";
echo $test->name; //輸出 中國人 因為使用了魔術方法 __get 和 __set

var_dump(isset($test->name)); //返回 true
var_dump(empty($test->name)); //返回 false

unset($test->name); //銷毀時;自動調用__unset

var_dump($test->name); //報錯;未定義 Undefined property: a::$name

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM