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

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)站建設
日本不卡免费一区二区视频| 国产三级久久精品三级91| 亚洲中文字幕在线乱码| 国产精品久久一国产精品| 亚洲综合香蕉在线视频| 午夜福利大片在线观看视频| 日韩国产传媒视频在线观看 | 自偷自拍亚洲综合精品| 男人av天堂手机在线| 日本福利写真在线观看| 国产精品国产精品无卡区| 亚洲精品综合在线二区| 欧美日韩精品久久影院| 日韩 在线一区二区| 亚洲综合中文字幕经典av在线| 欧美日韩一区二区综合性色| 日本人妻内射一区二区| 亚洲人午夜射精精品日韩| 福利视频免费观看欧美| 亚洲不卡免费在线视频| 色哟哟网站在线精品视频| 亚洲精品国产熟女久久| 久久精品亚洲精品毛片| 成人精品欧美欧美一级乱黄| 亚洲国产一区二区精品| 亚洲性感人妻系列网站| 在线一区二区三区高清视频| 四虎影院成人精品久久| 首页亚洲一区二区三区| 极品性感尤物少妇粉嫩逼| 国产精品久久久久精品三级下载| 国产一级二级三级久久| 亚洲精品欧美日韩久久| 久久精品国产免费夜夜嗨| 欧美黄片免费在线视频| 亚洲欧美日韩伦理一区| 人妻中文字幕在线av| 亚洲精品av一区二区久久| 韩国午夜福利视频网站| 尤物天堂av一区二区| 色日韩在线观看视频|