詳解php的魔術(shù)方法__get()和__set()使用介紹
更新時間:2012年09月19日 17:39:35 作者:
php的魔術(shù)方法__get()和__set()使用介紹,需要的朋友可以參考下
先看看php官方文檔的解釋:
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.
究竟用中文怎么翻譯呢?
inaccessible :n. 難達到;難接近;無法理解。
有代碼有真相:
<?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é)果分析:
如果沒有__get方法,執(zhí)行 var_dump($s->a) var_dump($s->b) 會有致命的錯誤
如果沒有__get方法,執(zhí)行 var_dump($s->e) 會有一個notice,提示沒有定義屬性 $e
總結(jié):
1. 從一個難以訪問的屬性讀取數(shù)據(jù)的時候 __get() 方法被調(diào)用
2. 向一個難以訪問的屬性賦值的時候 __set() 方法被調(diào)用
3. 難以訪問包括:(1)私有屬性,(2)沒有初始化的屬性
4. __isset() __unset() 也類似
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.
究竟用中文怎么翻譯呢?
inaccessible :n. 難達到;難接近;無法理解。
有代碼有真相:
復(fù)制代碼 代碼如下:
<?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é)果分析:
如果沒有__get方法,執(zhí)行 var_dump($s->a) var_dump($s->b) 會有致命的錯誤
如果沒有__get方法,執(zhí)行 var_dump($s->e) 會有一個notice,提示沒有定義屬性 $e
總結(jié):
1. 從一個難以訪問的屬性讀取數(shù)據(jù)的時候 __get() 方法被調(diào)用
2. 向一個難以訪問的屬性賦值的時候 __set() 方法被調(diào)用
3. 難以訪問包括:(1)私有屬性,(2)沒有初始化的屬性
4. __isset() __unset() 也類似
您可能感興趣的文章:
- 基于PHP5魔術(shù)常量與魔術(shù)方法的詳解
- PHP的魔術(shù)常量__METHOD__簡介
- PHP中幾個常用的魔術(shù)常量
- PHP 中魔術(shù)常量的實例詳解
- php 魔術(shù)常量詳解及實例代碼
- PHP中類型轉(zhuǎn)換 ,常量,系統(tǒng)常量,魔術(shù)常量的詳解
- PHP中魔術(shù)變量__METHOD__與__FUNCTION__的區(qū)別
- php 魔術(shù)方法使用說明
- PHP中的常見魔術(shù)方法功能作用及用法實例
- php中的常用魔術(shù)方法總結(jié)
- php 魔術(shù)函數(shù)使用說明
- PHP學(xué)習(xí)記錄之常用的魔術(shù)常量詳解
相關(guān)文章
php自定義函數(shù)實現(xiàn)二維數(shù)組按指定key排序的方法
這篇文章主要介紹了php自定義函數(shù)實現(xiàn)二維數(shù)組按指定key排序的方法,通過自定義函數(shù)實現(xiàn)二維數(shù)組按照指定鍵值進行排序的功能,涉及數(shù)組的遍歷與判定相關(guān)操作技巧,需要的朋友可以參考下2016-09-09PHP面向?qū)ο罄^承用法詳解(優(yōu)化與減少代碼重復(fù))
這篇文章主要介紹了PHP面向?qū)ο罄^承用法,結(jié)合實例形式分析了php面向?qū)ο蟪绦蛟O(shè)計中繼承的使用方法及代碼優(yōu)化處理與減少代碼重復(fù)的相關(guān)操作技巧,需要的朋友可以參考下2016-12-12php實現(xiàn)事件監(jiān)聽與觸發(fā)的方法
這篇文章主要介紹了php實現(xiàn)事件監(jiān)聽與觸發(fā)的方法,可實現(xiàn)時間的綁定、觸發(fā)與注銷等功能,具有一定的參考借鑒價值,需要的朋友可以參考下2014-11-11Thinkphp結(jié)合AJAX長輪詢實現(xiàn)PC與APP推送詳解
這篇文章主要給大家介紹了關(guān)于Thinkphp結(jié)合AJAX長輪詢實現(xiàn)PC與APP推送的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-07-07[企業(yè)公眾號]升級到[企業(yè)微信]之后發(fā)送消息失敗的解決方法
這篇文章主要介紹了[企業(yè)公眾號]升級到[企業(yè)微信]之后發(fā)送消息失敗的解決方法,涉及微信接口的修改相關(guān)操作,需要的朋友可以參考下2017-06-06使用JSON實現(xiàn)數(shù)據(jù)的跨域傳輸?shù)膒hp代碼
某網(wǎng)站后臺用php腳本得到一個JSON格式的數(shù)據(jù),交給前臺javascript進行處理,使用JSON實現(xiàn)數(shù)據(jù)的跨域調(diào)用2011-12-12