《PHP編程:PHP中常用的魔術方法》要點:
本文介紹了PHP編程:PHP中常用的魔術方法,希望對您有用。如果有疑問,可以聯系我們。
PHP應用我們在PHP中經常用到魔術方法,像構造方法,析構方法等等魔術變量,下面總結一下一些常用的魔術變量:
PHP應用__construct(),__destruct(),__clone(),__autoload(),__tostring(),__invoke(),__set(),__get(),__unset(),__isset(),__call(),__callstatic;
PHP應用1,__constuct()構造函數
PHP應用通常實例化完一個對象之后,都要對該對象的屬性進行初始化!在實例化一個對象的時候,PHP系統會自動的調用一個名字叫作__construct()的方法,我們把這個方法叫作“構造方法”!
PHP應用其中,構造方法可以沒有參數!
PHP應用
<?php
class 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');
PHP應用2.__destruct()析構方法
PHP應用與構造方法是一對,構造方法是在一個對象“出生”的時候由系統自動調用的,而析構方法是在一個對象“消失”的時候由系統自動調用的!
PHP應用析構方法的名字叫__destruct();注意里面不能有任何的參數!
PHP應用
<?php
//析構方法
public function __destruct(){
}
?>
PHP應用注意:析構方法是在對象銷毀之前調用的!
PHP應用作用:
PHP應用析構方法的作用一般是用來釋放該對象所占用的額外的資源,而不是銷毀該對象本身!
PHP應用3,__clone()克隆
PHP應用觸發時機:是在克隆一個對象的時候,對新對象進行初始化的工作
PHP應用
//克隆方法在克隆對象的時候對新對象的初始化工作
public function __clone(){
$this->is_clone=true;
}
PHP應用思考:
PHP應用克隆出來的對象還是不是Student類中的一個實例呢?
PHP應用我們可以利用instanceof運算符來進行判斷!
PHP應用instanceof就是用來判斷某個對象是否是某個類的一個實例!
PHP應用需要兩個操作數,前面是一個對象變量,后面是一個類名!返回一個布爾值!
PHP應用var_dump($stu instanceof Stu);?? //返回bool(true)
PHP應用4.__autoload()自動加載類
PHP應用當調用不存在的類的時候自動調用!
PHP應用
<?php
/**
* 自動加載類
* 需要什么類__autoload會自動調用需要的文件
*
*/
public function __autoload($class_name)
{
require_once "../Model/{$class_name}.class.php";
}
?>
PHP應用5.__tostring()
PHP應用當將對象當成字符串使用的時候自動調用
PHP應用6.__invoke()
PHP應用當將對象當成函數使用的時候自動調用
PHP應用7,__set()
PHP應用當對無法訪問的屬性賦值時自動調用(比如:類外調用私有屬性)
PHP應用8.__get()
PHP應用當對獲取無法訪問的屬性值的時候自動調用
PHP應用9.__unset()
PHP應用當銷毀無法訪問的屬性的時候自動調用
PHP應用10.__isset()
PHP應用當判斷無法訪問的屬性是否存在的時候自動調用
PHP應用11.__call()
PHP應用當調用無法訪問的普通方法時自動觸發
PHP應用
<?php
class Stu{
public function __call(){
echo "error";
}
}
$stu = new Stu();
//此時Stu類里沒有show()方法,會觸發__call()函數
$stu->show();
PHP應用12.__callststic()
PHP應用當無法通過靜態方法訪問時自動觸發
PHP應用
<?php
class Stu{
public static function __callstatic(){
echo "error";
}
}
$stu = new Stu();
//此時Stu類里沒有show()方法,會觸發__call()函數
$stu::show();
PHP應用以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持維易PHP!
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/892.html