詳解php的魔術(shù)方法__get()和__set()使用介紹
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.
究竟用中文怎么翻譯呢?
inaccessible :n. 難達(dá)到;難接近;無(wú)法理解。
有代碼有真相:
<?php
error_reporting(E_ALL);
class stu{
private $a;
private $b = 0;
public $c;
public $d = 0;
//這里的 private 可以用 protected public 替代
private function __get($name) {
return 123;
}
//這里的 private 也可以用 protected public 替代
private function __set($name, $value) {
echo "This is set function";
}
}
$s = new stu();
var_dump($s->a); //output: 123
var_dump($s->b); //output: 123
var_dump($s->c); //output: null
var_dump($s->d); //output: 0
var_dump($s->e); //output: 123
$s->a = 3; //output: This is set function
$s->c = 3; //no output
$s->f = 3; //output: This is set function
?>
結(jié)果分析:
如果沒(méi)有__get方法,執(zhí)行 var_dump($s->a) var_dump($s->b) 會(huì)有致命的錯(cuò)誤
如果沒(méi)有__get方法,執(zhí)行 var_dump($s->e) 會(huì)有一個(gè)notice,提示沒(méi)有定義屬性 $e
總結(jié):
1. 從一個(gè)難以訪問(wèn)的屬性讀取數(shù)據(jù)的時(shí)候 __get() 方法被調(diào)用
2. 向一個(gè)難以訪問(wèn)的屬性賦值的時(shí)候 __set() 方法被調(diào)用
3. 難以訪問(wèn)包括:(1)私有屬性,(2)沒(méi)有初始化的屬性
4. __isset() __unset() 也類似
- 基于PHP5魔術(shù)常量與魔術(shù)方法的詳解
- PHP的魔術(shù)常量__METHOD__簡(jiǎn)介
- PHP中幾個(gè)常用的魔術(shù)常量
- PHP 中魔術(shù)常量的實(shí)例詳解
- php 魔術(shù)常量詳解及實(shí)例代碼
- PHP中類型轉(zhuǎn)換 ,常量,系統(tǒng)常量,魔術(shù)常量的詳解
- PHP中魔術(shù)變量__METHOD__與__FUNCTION__的區(qū)別
- php 魔術(shù)方法使用說(shuō)明
- PHP中的常見(jiàn)魔術(shù)方法功能作用及用法實(shí)例
- php中的常用魔術(shù)方法總結(jié)
- php 魔術(shù)函數(shù)使用說(shuō)明
- PHP學(xué)習(xí)記錄之常用的魔術(shù)常量詳解
相關(guān)文章
php自定義函數(shù)實(shí)現(xiàn)二維數(shù)組按指定key排序的方法
這篇文章主要介紹了php自定義函數(shù)實(shí)現(xiàn)二維數(shù)組按指定key排序的方法,通過(guò)自定義函數(shù)實(shí)現(xiàn)二維數(shù)組按照指定鍵值進(jìn)行排序的功能,涉及數(shù)組的遍歷與判定相關(guān)操作技巧,需要的朋友可以參考下2016-09-09PHP面向?qū)ο罄^承用法詳解(優(yōu)化與減少代碼重復(fù))
這篇文章主要介紹了PHP面向?qū)ο罄^承用法,結(jié)合實(shí)例形式分析了php面向?qū)ο蟪绦蛟O(shè)計(jì)中繼承的使用方法及代碼優(yōu)化處理與減少代碼重復(fù)的相關(guān)操作技巧,需要的朋友可以參考下2016-12-12php實(shí)現(xiàn)事件監(jiān)聽與觸發(fā)的方法
這篇文章主要介紹了php實(shí)現(xiàn)事件監(jiān)聽與觸發(fā)的方法,可實(shí)現(xiàn)時(shí)間的綁定、觸發(fā)與注銷等功能,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11Thinkphp結(jié)合AJAX長(zhǎng)輪詢實(shí)現(xiàn)PC與APP推送詳解
這篇文章主要給大家介紹了關(guān)于Thinkphp結(jié)合AJAX長(zhǎng)輪詢實(shí)現(xiàn)PC與APP推送的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07[企業(yè)公眾號(hào)]升級(jí)到[企業(yè)微信]之后發(fā)送消息失敗的解決方法
這篇文章主要介紹了[企業(yè)公眾號(hào)]升級(jí)到[企業(yè)微信]之后發(fā)送消息失敗的解決方法,涉及微信接口的修改相關(guān)操作,需要的朋友可以參考下2017-06-06使用JSON實(shí)現(xiàn)數(shù)據(jù)的跨域傳輸?shù)膒hp代碼
某網(wǎng)站后臺(tái)用php腳本得到一個(gè)JSON格式的數(shù)據(jù),交給前臺(tái)javascript進(jìn)行處理,使用JSON實(shí)現(xiàn)數(shù)據(jù)的跨域調(diào)用2011-12-12詳解PHP 7.4 中數(shù)組延展操作符語(yǔ)法知識(shí)點(diǎn)
在本篇文章里小編給各位整理的是關(guān)于PHP 7.4 中數(shù)組延展操作符語(yǔ)法知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考學(xué)習(xí)下。2019-07-07php編譯安裝php-amq擴(kuò)展簡(jiǎn)明教程
這篇文章主要介紹了php編譯安裝php-amq擴(kuò)展的方法,較為詳細(xì)的分析了php-amq擴(kuò)展的功能及下載、編譯安裝的具體步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-06-06