詳解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. 難達(dá)到;難接近;無法理解。
有代碼有真相:
<?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. 難達(dá)到;難接近;無法理解。
有代碼有真相:
復(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ù)常量的實(shí)例詳解
- php 魔術(shù)常量詳解及實(shí)例代碼
- PHP中類型轉(zhuǎn)換 ,常量,系統(tǒng)常量,魔術(shù)常量的詳解
- PHP中魔術(shù)變量__METHOD__與__FUNCTION__的區(qū)別
- php 魔術(shù)方法使用說明
- PHP中的常見魔術(shù)方法功能作用及用法實(shí)例
- php中的常用魔術(shù)方法總結(jié)
- php 魔術(shù)函數(shù)使用說明
- PHP學(xué)習(xí)記錄之常用的魔術(shù)常量詳解
相關(guān)文章
php中ob(Output Buffer 輸出緩沖)函數(shù)使用方法
php中ob(Output Buffer 輸出緩沖)函數(shù)使用方法...2007-07-07
火車采集器 免費(fèi)版使出收費(fèi)版本功能實(shí)現(xiàn)原理
火車頭免費(fèi)版本不支持采集結(jié)果的外掛處理,比如采用php來輔助處理結(jié)果,而火車頭本身對于正則表達(dá)式的不完整支持,2009-09-09

