PHP中常用的魔術(shù)方法
我們在PHP中經(jīng)常用到魔術(shù)方法,像構(gòu)造方法,析構(gòu)方法等等魔術(shù)變量,下面總結(jié)一下一些常用的魔術(shù)變量:
__construct(),__destruct(),__clone(),__autoload(),__tostring(),__invoke(),__set(),__get(),__unset(),__isset(),__call(),__callstatic;
1,__constuct()構(gòu)造函數(shù)
通常實(shí)例化完一個(gè)對(duì)象之后,都要對(duì)該對(duì)象的屬性進(jìn)行初始化!在實(shí)例化一個(gè)對(duì)象的時(shí)候,PHP系統(tǒng)會(huì)自動(dòng)的調(diào)用一個(gè)名字叫作__construct()的方法,我們把這個(gè)方法叫作“構(gòu)造方法”!
其中,構(gòu)造方法可以沒有參數(shù)!
<?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');
2.__destruct()析構(gòu)方法
與構(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)用的!
析構(gòu)方法的名字叫__destruct();注意里面不能有任何的參數(shù)!
<?php //析構(gòu)方法 public function __destruct(){ } ?>
注意:析構(gòu)方法是在對(duì)象銷毀之前調(diào)用的!
作用:
析構(gòu)方法的作用一般是用來釋放該對(duì)象所占用的額外的資源,而不是銷毀該對(duì)象本身!
3,__clone()克隆
觸發(fā)時(shí)機(jī):是在克隆一個(gè)對(duì)象的時(shí)候,對(duì)新對(duì)象進(jìn)行初始化的工作
//克隆方法在克隆對(duì)象的時(shí)候?qū)π聦?duì)象的初始化工作 public function __clone(){ $this->is_clone=true; }
思考:
克隆出來的對(duì)象還是不是Student類中的一個(gè)實(shí)例呢?
我們可以利用instanceof運(yùn)算符來進(jìn)行判斷!
instanceof就是用來判斷某個(gè)對(duì)象是否是某個(gè)類的一個(gè)實(shí)例!
需要兩個(gè)操作數(shù),前面是一個(gè)對(duì)象變量,后面是一個(gè)類名!返回一個(gè)布爾值!
var_dump($stu instanceof Stu); //返回bool(true)
4.__autoload()自動(dòng)加載類
當(dāng)調(diào)用不存在的類的時(shí)候自動(dòng)調(diào)用!
<?php /** * 自動(dòng)加載類 * 需要什么類__autoload會(huì)自動(dòng)調(diào)用需要的文件 * */ public function __autoload($class_name) { require_once "../Model/{$class_name}.class.php"; } ?>
5.__tostring()
當(dāng)將對(duì)象當(dāng)成字符串使用的時(shí)候自動(dòng)調(diào)用
6.__invoke()
當(dāng)將對(duì)象當(dāng)成函數(shù)使用的時(shí)候自動(dòng)調(diào)用
7,__set()
當(dāng)對(duì)無法訪問的屬性賦值時(shí)自動(dòng)調(diào)用(比如:類外調(diào)用私有屬性)
8.__get()
當(dāng)對(duì)獲取無法訪問的屬性值的時(shí)候自動(dòng)調(diào)用
9.__unset()
當(dāng)銷毀無法訪問的屬性的時(shí)候自動(dòng)調(diào)用
10.__isset()
當(dāng)判斷無法訪問的屬性是否存在的時(shí)候自動(dòng)調(diào)用
11.__call()
當(dāng)調(diào)用無法訪問的普通方法時(shí)自動(dòng)觸發(fā)
<?php class Stu{ public function __call(){ echo "error"; } } $stu = new Stu(); //此時(shí)Stu類里沒有show()方法,會(huì)觸發(fā)__call()函數(shù) $stu->show();
12.__callststic()
當(dāng)無法通過靜態(tài)方法訪問時(shí)自動(dòng)觸發(fā)
<?php class Stu{ public static function __callstatic(){ echo "error"; } } $stu = new Stu(); //此時(shí)Stu類里沒有show()方法,會(huì)觸發(fā)__call()函數(shù) $stu::show();
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
PHP 7安裝調(diào)試工具Xdebug擴(kuò)展的方法教程
Xdebug提供了豐富的調(diào)試函數(shù),也可將Xdebug安裝配置為zend studio、editplus調(diào)試PHP的第三方插件,通過開啟自動(dòng)跟蹤(auto_trace)和分析器功能,可以直觀的看到PHP源代碼的性能數(shù)據(jù),以便優(yōu)化PHP代碼,本文介紹了PHP 7安裝調(diào)試工具Xdebug擴(kuò)展的方法,需要的朋友可以參考。2017-06-06按上下級(jí)層次關(guān)系輸出內(nèi)容的PHP代碼
php下按上下級(jí)層次關(guān)系輸出內(nèi)容,需要的朋友可以參考下。2010-07-07php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié)
這篇文章主要介紹了php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié),本文同時(shí)介紹了mb_convert_encoding函數(shù),需要的朋友可以參考下2014-10-10PHP實(shí)現(xiàn)的只保留字符串首尾字符功能示例【隱藏部分字符串】
這篇文章主要介紹了PHP實(shí)現(xiàn)的只保留字符串首尾字符功能,結(jié)合實(shí)例形式分析了php隱藏部分字符串相關(guān)的字符串遍歷、截取相關(guān)操作技巧,需要的朋友可以參考下2019-03-03php生成并下載word文件到本地實(shí)現(xiàn)方法詳解
要給最常用出租屋管理系統(tǒng)增加個(gè)合同功能,mark下知識(shí)點(diǎn)。要生成合同就需要使用phpword。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08php使用curl判斷網(wǎng)頁404(不存在)的方法
這篇文章主要介紹了php使用curl判斷網(wǎng)頁404(不存在)的方法,通過curl獲取http頭信息進(jìn)行404錯(cuò)誤判斷,非常簡便易懂,需要的朋友可以參考下2016-06-06