本篇文章主要介紹了PHP中常用的魔術方法的相關資料。具有很好的參考價值。下面跟著小編一起來看下吧
我們在PHP中經常用到魔術方法,像構造方法,析構方法等等魔術變數,下面總結一下一些常用的魔術變數:
__construct(),__destruct(),__clone(),__autoload(),__tostring(),__invoke(),__set(),__get(),__unset(),__isset(),__call(),__callstatic;
1,__constuct()建構函式
通常執行個體化完一個對象之後,都要對該對象的屬性進行初始化!在執行個體化一個對象的時候,PHP系統會自動的調用一個名字叫作__construct()的方法,我們把這個方法叫作“構造方法”!
其中,構造方法可以沒有參數!
<?phpclass Stu { public $stu_name; public $stu_age;//構造方法,執行個體化時自動調用 public function __construct($name,$age){ $this->stu_name = $name; $this->stu_age = $age; } }//執行個體化stu對象$stu = new Stu('孫悟空','500');
2.__destruct()析構方法
與構造方法是一對,構造方法是在一個對象“出生”的時候由系統自動調用的,而析構方法是在一個對象“消失”的時候由系統自動調用的!
析構方法的名字叫__destruct();注意裡面不能有任何的參數!
<?php//析構方法public function __destruct(){}?>
注意:析構方法是在對象銷毀之前調用的!
作用:
析構方法的作用一般是用來釋放該對象所佔用的額外的資源,而不是銷毀該對象本身!
3,__clone()複製
觸發時機:是在複製一個對象的時候,對新對象進行初始化的工作
//複製方法在複製對象的時候對新對象的初始化工作 public function __clone(){ $this->is_clone=true;}
思考:
複製出來的對象還是不是Student類中的一個執行個體呢?
我們可以利用instanceof運算子來進行判斷!
instanceof就是用來判斷某個對象是否是某個類的一個執行個體!
需要兩個運算元,前面是一個物件變數,後面是一個類名!返回一個布爾值!
var_dump($stu instanceof Stu); //返回bool(true)
4.__autoload()自動載入類
當調用不存在的類的時候自動調用!
<?php /*** 自動載入類* 需要什麼類__autoload會自動調用需要的檔案**/public function __autoload($class_name){ require_once "../Model/{$class_name}.class.php";} ?>
5.__tostring()
當將對象當成字串使用的時候自動調用
6.__invoke()
當將對象當成函數使用的時候自動調用
7,__set()
當對無法訪問的屬性賦值時自動調用(比如:類外調用私人屬性)
8.__get()
當對擷取無法訪問的屬性值的時候自動調用
9.__unset()
當銷毀無法訪問的屬性的時候自動調用
10.__isset()
當判斷無法訪問的屬性是否存在的時候自動調用
11.__call()
當調用無法訪問的普通方法時自動觸發
<?php class Stu{ public function __call(){ echo "error"; }}$stu = new Stu();//此時Stu類裡沒有show()方法,會觸發__call()函數$stu->show();
12.__callststic()
當無法通過靜態方法訪問時自動觸發
<?php class Stu{ public static function __callstatic(){ echo "error"; }}$stu = new Stu();//此時Stu類裡沒有show()方法,會觸發__call()函數$stu::show();
以上就是本文的全部內容,希望對大家的學習有所協助。