成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

五分鐘帶你了解PHP中的魔術方法(實例詳解)

在之前的文章中給大家帶來了《PHP中clone關鍵字和__clone()方法的使用(實例詳解)》,其中給大家詳細的介紹了PHP中的clone關鍵字和__clone()方法,本篇文章繼續給大家帶來PHP中的魔術方法,希望對大家有幫助!

五分鐘帶你了解PHP中的魔術方法(實例詳解)

在我們之前的文章中,我們介紹__clone()方法的時候提到,這是魔術方法的一種,《帶你分清類中的構造函數與析構函數》中也提到的構造函數與析構函數也叫作構造方法與析構方法,他們也是魔術方法的一種。那么什么是魔術方法?它有哪些常用的方法?它又是怎樣使用的?接下來我們一起來看一看吧。

PHP魔術方法

在PHP面向對象編程中,PHP里有一系列的魔術方法,這些魔術方法看看之前學習的__clone__construct__destruct我們能發現一個共同點,那就是它們都是由__兩個下劃線開始的,并且都是在某種特定的條件下自動調用的。

那接下來我們來看一看一些常用的魔術方法,結合實例來看一下它們的使用方法。

__set()方法

__set()方法用于在為當前環境下未定義或不可見的類屬性賦值時,需要注意的是所有的魔術方法,都是在某種特定條件下自動調用的,為當前環境下未定義或不可見的類屬性賦值時就是__set()方法調用的特定條件。

語法格式如下:

public function __set(要操作的變量, 要操作變量的值){     ... ... ; }

實例如下:

<?php     class father{         public $study1;         private $study2;         public function __set($key, $value){             echo '為“'.$key.'”賦值“'.$value.'”失敗!<br>';         }     }     $object          = new father();     $object -> study1  = '好好學習';     $object -> study2   = '天天向上';     $object -> study3 = '福如東海'; ?>

輸出結果:

五分鐘帶你了解PHP中的魔術方法(實例詳解)

由上述實例看出,當當前環境下未定義或不可見的類屬性賦值時,就會調用__set()方法。

__get()方法

自動調用 __get() 方法的特定條件是在調用或獲取當前環境下未定義或不可見的類屬性時,定義該方法的語法格式如下:

public function __get($name){     ... ... ; }

其中參數$name表示要操作的變量名稱,下面通過實例我們來看一下__get()方法的使用,實例如下:

<?php     class father{         public $study = '好好學習';         private $study1 = '天天向上';         public function __get($study1){             echo '獲取:“'.$study1.'”失敗!';         }     }     $object = new father();     echo $object -> study.'<br>';     echo $object -> study1.'<br>';     echo $object -> study2.'<br>'; ?>

輸出結果:

五分鐘帶你了解PHP中的魔術方法(實例詳解)

由上述結果可以看出在調用或獲取當前環境下未定義或不可見的類屬性時,會自動調用 __get() 方法。

__isset() 方法

自動調用 __isset() 方法的特定條件是當在類外部對類中不可訪問或不存在的屬性使用 isset()empty() 函數時,該方法的語法格式如下:

public function __isset($name){     ... ... ; }

其中我們需要注意的是:

參數 $name 為要訪問的屬性名稱。

  • isset() 函數是用來檢查一個變量是否存在并且還要判斷不為 NULL,如果傳入的變量存在則傳回 true,不存在傳回 false。

  • empty() 函數是用來檢查一個變量是否為空,如果變量的值等于 FALSE,那么這個變量會被認為不存在。

  • 如果想要使用 isset() 或 empty() 函數對類中的私有屬性進行檢測的話,我們只需要在類中添加一個 __isset() 方法就可以了,當在類外部使用 isset() 或 empty() 函數時,會自動調用類里面的 __isset() 方法。

接下來我們通過實例來看一下__isset()方法的使用,實例如下:

<?php     class father{         public $study = '好好學習';         private $name = '天天向上';         public function __isset($name){             if(property_exists('Website', $name)){                 echo '成員屬性:“'.$name.'”存在!<br>';             }else{                 echo '成員屬性:“'.$name.'”不存在!<br>';             }         }     }     $object = new father();     isset($object -> mother);     isset($object -> name); ?>

輸出結果:

五分鐘帶你了解PHP中的魔術方法(實例詳解)

其中我們需要注意的是,property_exists() 函數可以用來檢測類中是否定義了該屬性,語法格式為

 property_exists($class_name,$property_name)

其中 $class_name 為字符串形式的類名,即判斷類 class_name 中是否定義了 property_name 屬性。

__unset() 方法

自動調用__unset() 方法的特定條件是當在類外部對類中不可訪問或不存在的屬性使用 unset() 函數時,該方法的語法格式如下:

public function __unset($name){     ... ... ; }

其中我們需要注意的是:

  • 參數 $name 為要訪問的屬性名稱。

  • unset() 函數的作用是刪除指定的變量,需要傳入一個或多個變量作為參數,另外,該函數沒有返回值。

  • 可以使用 unset() 函數在類外部去刪除類中的成員屬性。如果要刪除類中的公有屬性的話直接使用 unset() 函數即可;

  • 如果要刪除類中的私有屬性的話,則需要在類中添加一個 __unset() 方法。

接下來我們通過實例來看一下__unset()方法的使用,實例如下:

<?php     class father{         public $name = 'http://c.biancheng.net/php/';         private $study = 'C語言中文網';         public function __unset($study){             if(property_exists('father', $study)){                 unset($this->$study);                 echo '移除成員屬性:“'.$study.'”成功!<br>';             }else{                 echo '成員屬性:“'.$study.'”不存在!<br>';             }         }     }     $object = new father();     unset($object->name);     unset($object->study);     unset($object->study1); ?>

輸出結果:

五分鐘帶你了解PHP中的魔術方法(實例詳解)

由上述實例看出當在類外部對類中不可訪問或不存在的屬性使用 unset() 函數時,__unset() 方法會被自動調用。

上述實例中給大家介紹了一些常用的魔術方法,但這并不是魔術方法的全部,那接下來再給大家列舉一些魔術方法:

  • __call() — 調用一個不存在的方法時自動調用

  • __sleep() — 使用 serialize 序列化時自動調用

  • __toString() — 把對象轉換成字符串時自動調用

  • __invoke() — 當嘗試把對象當方法調用時自動調用

  • __wakeup() — 使用 unserialize 反序列化時自動調用

  • __callStatic() — 調用一個不存在的靜態方法時自動調用

  • __debugInfo() — 使用 var_dump() 打印對象信息時自動調用

  • __set_state() — 當使用 var_export() 函數時自動調用,接受一個數組參數

大家如果感興趣的話,可以點擊《PHP視頻教程》進行

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久久久久国产精品无码超碰| 久久GOGO国模啪啪人体| 黑人巨大JEEP日本人| 教室停电了校草挺进我体内| 久久久久99精品成人片直播| 免费人成在线观看网站| 欧美成人一区二区| 日韩精品无码区免费专区| 无码人妻精品一区二区三区66| 亚洲AV无码专区在线电影成人| 亚洲人ⅤSAⅤ国产精品| 14萝自慰专用网站| 被三个男人绑着躁我好爽| 国产成人免费AV片在线观看| 韩国三级L中文字幕无码| 久久精品亚洲熟妇少妇任你躁 | 亚洲AV图片一亚洲AV| 亚洲日韩久久综合中文字幕 | 亚洲爆乳成AV人在线视菜奈实| 亚洲午夜福利精品久久| 99久久国产综合精品五月天喷水| 丁香花在线影院观看在线播放| 国产特级毛片AAAAAA视频| 久久久久久精品免费免费4K| 欧美香蕉爽爽人人爽| 无码抽搐高潮喷水流白浆| 亚洲日韩AV无码中文字幕美国| 99精品国产兔费观看久久99| 国产XXXX色视频在线观看| 精品亚洲国产AⅤ在线| 欧美最猛性XXX| 小BBW小BBW小BBW小| 曰本无码人妻丰满熟妇啪| 成年大片免费视频播放| 国产无遮挡又黄又爽动态图| 老师你的兔子好软水好多小时 | 亚洲妇女无套内射精| 综合色天天鬼久久鬼色| 国产成人精品一区二区三区无码| 久久精品岛国AV一区二区无码 | 高潮白浆潮喷正在播放| 久久99精品国产99久久6尤物| 欧美久久高潮久久高潮| 香蕉视频一直看一直爽| 18禁网站在线永久免费观看| 国产成人啪精品视频免费软件 | 特级欧美ZOOXX| 一边做饭一边躁狂怎么办呢69| 厨房掀起少妇裙子挺进去| 九九久久99综合一区二区| 人人做人人爱在碰免费| 亚洲欧洲精品成人久久曰影片| 波多野结衣乳巨码无在线观看| 精品国产一区二区三区AV片| 人妻波多野结衣爽到喷水| 亚洲А∨天堂久久精品PPYPP| 9色国产深夜内射| 国精产品一二三产区| 前夫6天要了我25次| 亚洲精品国产成人99久久| 成人日韩熟女高清视频一区| 久久精品国产2020观看福利| 丝袜国偷自产中文字幕| 中文字幕久久久人妻无码| 国产午夜精品理论片| 全彩漫画口工18禁无遮H| 亚洲人成网站18禁止大| 国产成人牲交在线观看视频| 女儿的朋友3完有限中字木瓜| 亚洲AV日韩精品久久久久久| 成年女人毛片视频免费| 久久丫免费无码一区二区| 小蜜桃HD中字高清在线| 把腿张开让老子臊烂你的动漫视频 | 亚洲AV成人综合网伊人| 菠萝菠萝蜜在线观看| 军人全身脱精光自慰| 亚洲AV日韩AV综合AⅤXXX| 超碰97人人做人人爱2020| 免费A级毛片无码A∨蜜芽按摩 | 五十路レンタのおばさん| JAPONENSISFES中国| 久久精品丝袜高跟鞋| 性VIDEOSTV另类极品| 低头看我是怎么C哭你的| 男朋友一晚弄了我5次正常吗| 亚洲精品一区二区三浪潮AV| 国产精品69人妻无码久久久| 亲情会王芳高敏大团圆| 长腿校花无力呻吟娇喘| 精品动漫一区二区无遮挡| 婷婷久久久亚洲欧洲日产国码AV| 亚洲成无码电影在线观看| 永久免费看啪啪网址入口| 成人无码AⅤ在线播放| 国产DB624色谱柱88690| 国产精品成人影院在线观看| 欧美精品黑人粗大视频| 一本色道久久HEZYO无码| 国内精品久久久久影院蜜芽| 天天干天天射天天操| 成年奭片免费观看视频天天看| 男男喷液抽搐高潮呻吟AV| 亚洲永久精品wW4791一区| 海角国精产品三区二区三区 | 蜜桃臀无码内射一区二区三区| 亚洲精品宾馆在线精品酒店| 国产日韩在线欧美视频| 天美传媒MV在线看免费| 吃了继兄给我开的药我做的梦| 人妻穿丁字裤陪客户| 99这里只有精品| 欧美黑大粗无码免费视频| 中文人妻AV高清一区二区| 久久婷婷五月综合色国产香蕉| 亚洲毛片无码专区亚洲乱| 狠狠爱ADY亚洲色| 亚洲.国产.欧美一区二区三区 | JEAⅠOUSVUE成熟少归| 欧美IPHONEXSMAX免费| 最新系列国产专区|亚洲国产| 麻豆一区二区在我观看| 在线A毛片免费视频观看| 久久无码中文字幕无码| 夜夜春夜夜爽一区二区三区| 久久精品女人天堂AV| 亚洲一区无码中文字幕| 久久九九精品国产综合喷水| 亚洲色大成网站久久久| 久久国内精品自在自线400部| 亚洲免费成人av| 久久国内精品自在自线400部| 亚洲色一色鲁一鲁鲁| 久久久久久无码AV成人影院| 又爽又刺激免费男女视频| 美美哒中文日本免费6| 18禁亲胸揉胸膜下刺激免费网站| 免费观看高清大片的播放器| 99久久国产综合精品SWAG| 欧美在线 | 亚洲| 插花弄玉曲径通幽| 熟妇人妻AV无码一区二区三区| 国产AⅤ精品一区二区久久| 无码精品一区二区三区免费视频| 国产清纯白嫩大学生正在播放| 亚洲AV无码性色AV无码网站| 九九九精品成人免费视频7| 已婚少妇美妙人妻系列| 男女做爰高清免费直播网站| JAVA强行VIDEOS| 色欲AV自慰一区二区三区| 国产精品免费精品自在线观看| 亚洲AV无码日韩AⅤ无码忘忧草| 精品国偷自产在线视频| 制服视频在线一区二区| 欧美亚洲日韩不卡在线在线观看 | 99久久久无码国产精品免费| 人妻 清高 无码 中文字幕| 绯色av一区二区三区蜜臀| 午夜福利麻豆国产精品| 精品乱码一区二区三区av| 在线A级毛片免费视频| 人妻少妇伦在线无码专区视频| 国产777涩在线 | 美洲| 亚洲AV成人一区二区三区天堂| 精品无人码麻豆乱码1区2区| 中文字AV字幕在线观看| 欧美熟妇的性裸交| 国产成人无码AⅤ| 亚洲精品无码AV中文永久在线| 蜜芽亚洲AV无码精品国产| 波多野无码中文字幕AV专区| 无码专区—VA亚洲V天堂| 久久久精品波多野结衣AV| BT天堂在线WWW最新版官网| 色婷婷五月综合激情中文字幕| 国内国精产品一二三区传媒| 中国小YOUNV女YOUNV| 日韩视频一区二区三区| 狠狠色婷婷久久一区二区三区| 中文字幕久久精品波多野结百度| 色8久久人人97超碰香蕉987| 韩国三级L中文字幕无码| 77777亚洲午夜久久多人| 特黄AAAAAAAAA毛片免费视频| 精东传媒VS天美传媒在线| 99久久国产综合精品女| 无码人妻久久一区二区三区APP| 久久精品国产亚洲AV无码偷窥| 八戒八戒在线资源网| 亚洲AV成人无码网站大全唐人| 美女扒开腿让男人桶爽网站| 粉嫩av一区二区夜夜嗨| 亚洲日韩中文字幕日本| 人喾交性专区免费看| 国产一在线精品一区在线观看| 18禁黄网站禁片免费观看APP| 无码成人一区二区| 国产AV夜夜欢一区二区三区 | 亚洲成AV人最新地堂无码|