欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

PHP中get和set魔術方法的使用

__get()魔術方法的用法

案例一、

創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領域包括成都網(wǎng)站建設、成都網(wǎng)站設計、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。

實踐目標:

1、PHP中__get的定義格式如下:public function __get(參數(shù)1) ,這里注意必須是2個__,名稱必須是__get,而且必須是要帶1個參數(shù),多一個少一個都不行

具體代碼如下:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    // static public function staticFun(){
    //     echo "Animal中的staticFun執(zhí)行了<br/>";
    // }
    //魔術方法  
    public  function __get($name){
        echo "自動執(zhí)行了Animal類中的__get方法,當前屬性為:{$name}<br/>";
    }
}
$ani = new Animal();
?>

運行結(jié)果為:

未報錯,說明語法正確

現(xiàn)在我們 多加個參數(shù)看下

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    // static public function staticFun(){
    //     echo "Animal中的staticFun執(zhí)行了<br/>";
    // }
    //魔術方法  
    public  function __get($name,$arg){
        echo "自動執(zhí)行了Animal類中的__get方法,當前屬性為:{$name}<br/>";
    }
}
$ani = new Animal();
$name = $ani->name;
?>

運行結(jié)果為:

Fatal error: Method Animal::__get() must take exactly 1 argument inD:\E-class\class-code\classing\index.php on line14

所以從結(jié)果可以看出,參數(shù)有且只能有一個,多一個少一個都不行

案例二、

實踐目標:

1、當調(diào)用不存在的屬性時,系統(tǒng)會自動觸發(fā)對象所在類的定義好的__get方法

具體代碼如下:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    // static public function staticFun(){
    //     echo "Animal中的staticFun執(zhí)行了<br/>";
    // }
    //魔術方法  
    public  function __get($name){
        echo "自動執(zhí)行了Animal類中的__get方法,當前屬性為:{$name}<br/>";
    }
}
$ani = new Animal();
$name = $ani->name;
?>

運行結(jié)果如下:

自動執(zhí)行了Animal類中的__get方法,當前屬性為:name

我們發(fā)現(xiàn)其實我們沒有手動的去調(diào)用__get方法,就是說沒有寫成$ani->__get(),但是這個方法依然執(zhí)行了,因為什么呢?因為我們寫了$ani->name;而這個name方法沒有在類中定義,然后這個類中又定義了這個魔術方法,所以它就像魔術一樣,突然就被自動執(zhí)行了,而且我們__get中的參數(shù)就是這個屬性

這里一定要注意,是2個下劃線,不是一個,否則就不是魔術方法了,下面還是再來做下測試

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    // static public function staticFun(){
    //     echo "Animal中的staticFun執(zhí)行了<br/>";
    // }
    //魔術方法  試著少寫一個_
    public  function _get($name){
        echo "自動執(zhí)行了Animal類中的__get方法,當前屬性為:{$name}<br/>";
    }
}
$ani = new Animal();
$name = $ani->name;
?>

運行結(jié)果如下:

Notice: Undefined property: Animal::$name in D:\E-class\class-code\classing\index.php on line 18

所以此刻就會報錯了,因為沒有__get的魔術方法了,所以一定要注意是2個下劃線,就好像構(gòu)造函數(shù)和析構(gòu)函數(shù)一樣,都是兩個下劃線

__set()魔術方法的用法

案例一、

實踐目標:

1、PHP中__set在類中定義格式如下  public function __set(屬性參數(shù)1,屬性對應的值的參數(shù)2),這里注意必須是2個__,名稱必須是__set,而且必須是要帶2個參數(shù),多一個少一個都不行

具體代碼如下:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔術方法  
    public  function __set($name,$val){
        echo "自動執(zhí)行了Animal類中的__set方法,當前屬性為:{$name},值為:{$val}<br/>";
    }
}
$ani = new Animal();

?>

運行結(jié)果為:

空白,說明沒有報錯

接下來,我們少一個參數(shù)看下

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔術方法  
    public  function __set($name){
        echo "自動執(zhí)行了Animal類中的__set方法,當前屬性為:{$name},值為:{$val}<br/>";
    }
}
$ani = new Animal();

?>

運行結(jié)果為:

Fatal error: Method Animal::__set() must take exactly 2 arguments inD:\E-class\class-code\classing\index.php on line11

所以__set方法的參數(shù)有且只能是2個,一個是屬性名,一個是屬性要設置的值

案例二、

實踐目標:

1、當設置不存在的屬性時,系統(tǒng)會自動觸發(fā)對象所在類的定義好的__set方法

具體代碼如下:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔術方法  
    public  function __set($name,$val){
        echo "自動執(zhí)行了Animal類中的__set方法,當前屬性為:{$name},值為:{$val}<br/>";
    }
}
$ani = new Animal();
$ani->name = "小狗";

?>

運行結(jié)果為:

自動執(zhí)行了Animal類中的__set方法,當前屬性為:name,值為:小狗

我們發(fā)現(xiàn)其實我們沒有手動的去調(diào)用__set方法,也就是說沒有寫成$ani->__set(),但是這個方法依然執(zhí)行了,因為什么呢?因為我們寫了$ani->name = "小狗";;這個name屬性在類中沒有定義,然后這個類中又定義了這個魔術方法,所以它就像魔術一樣,突然就被自動執(zhí)行了

這里一定要注意,是2個下劃線,不是一個,否則就不是魔術方法了,下面還是再來做下測試

具體代碼如下:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔術方法  試著少寫一個_
    public  function _set($name,$val){
        echo "自動執(zhí)行了Animal類中的__sett方法,當前屬性為:{$name},值為:{$val}<br/>";
    }
}
$ani = new Animal();
$ani->name = "小狗";

?>

運行結(jié)果如下:

空白了

所以說明沒有執(zhí)行__set魔術方法了,所以一定要記得是兩個__。

以上就是PHP魔術方法之__get,__set詳解(代碼實例)的詳細內(nèi)容,更多請關注創(chuàng)新互聯(lián)其它相關文章!

當前題目:PHP中get和set魔術方法的使用
分享網(wǎng)址:http://aaarwkj.com/article0/jpopoo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、動態(tài)網(wǎng)站手機網(wǎng)站建設、標簽優(yōu)化做網(wǎng)站、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設
日本免费精品一区二区三区四区| 日韩美少妇大胆一区二区| 亚洲国产中日韩精品综合| 久久精品一区二区东京热| 亚洲精品日韩国产av| 国产成人+亚洲欧洲综合| 国产亚洲精品福利视频| 亚洲乱码一区二区在线| 久草免费福利视频资源站| 在线观看高清国产黄色片| av一区二区中文字幕| 日韩精品人妻一区二区网站 | 日本一区二区电影大全| 久久久久久成人亚洲| 欧美精品成人免费在线| 色综合久久婷婷色综合网| 成人午夜激情福利动态| 欧美一区二区三区有限公司| 亚洲国产精品一区二区三区在线| 精品人妻av区久久久| 成人午夜福利视频免费观看| 亚洲综合日韩丝袜人妻| 少妇互射视频免费视频| 亚洲黄色成人在线观看| 青青草日韩视频在线观看| 欧美精品一区二区三区在线| 白浆视频在线免费观看| 日本大片在线一区二区三区| 老司机精品成人免费视频| 国产精品久久综合网| 日韩高清午夜片在线观看| 天天免费日日夜夜夜夜| 深夜福利在线观看97| 白浆熟女精品国产91| 日韩欧美在线观看一区二区| 免费无遮挡午夜视频网站| 亚洲国产欧美日韩在线| 亚洲国产欧美日韩在线一区| 在线国产偷拍自拍视频| 日韩高清伦理一区二区| 国产欧美日韩另类视频|