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