預設不存在,但是如果使用者定義了相關的方法,則在相應的情況發生時會自動執行的方法,稱之為魔術方法。下面我們就給大家詳細介紹一下吧!
1,__constuct()建構函式
通常例項化完一個物件之後,都要對該物件的屬性進行初始化!在例項化一個物件的時候,PHP系統會自動的呼叫一個名字叫作__construct()的方法,我們把這個方法叫作“構造方法”!
其中,構造方法可以沒有引數!
stu_name = $name; $this->stu_age = $age; } }//例項化stu物件$stu = new Stu('孫悟空','500');
2.__destruct()析構方法
與構造方法是一對,構造方法是在一個物件“出生”的時候由系統自動呼叫的,而析構方法是在一個物件“消失”的時候由系統自動呼叫的.!
析構方法的名字叫__destruct();注意裡面不能有任何的引數!
注意:析構方法是在物件銷燬之前呼叫的!
作用:
析構方法的作用一般是用來釋放該物件所佔用的額外的資源,而不是銷燬該物件本身!
3,__clone()克隆
觸發時機:是在克隆一個物件的時候,對新物件進行初始化的工作
//克隆方法在克隆物件的時候對新物件的初始化工作 public function __clone(){ $this->is_clone=true;}
思考:
克隆出來的物件還是不是Student類中的一個例項呢?
我們可以利用instanceof運算子來進行判斷!
instanceof就是用來判斷某個物件是否是某個類的一個例項!
需要兩個運算元,前面是一個物件變數,後面是一個類名!返回一個布林值!
var_dump($stu instanceof Stu);
//返回bool(true)
4.__autoload()自動載入類
當呼叫不存在的類的時候自動呼叫!
5.__tostring()
當將物件當成字串使用的時候自動呼叫
6.__invoke()
當將物件當成函式使用的時候自動呼叫
7,__set()
當對無法訪問的屬性賦值時自動呼叫(比如:類外呼叫私有屬性)
8.__get()
當對獲取無法訪問的屬性值的時候自動呼叫
9.__unset()
當銷燬無法訪問的屬性的時候自動呼叫
10.__isset()
當判斷無法訪問的屬性是否存在的時候自動呼叫
11.__call()
當呼叫無法訪問的普通方法時自動觸發
echo "error"; }}$stu = new Stu();//此時Stu類裡沒有show()方法,會觸發__call()函式$stu->show();
12.__callststic()
當無法通過靜態方法訪問時自動觸發