先看看php官方文件的解釋:
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.
究竟用中文怎麼翻譯呢?
inaccessible :n. 難達到;難接近;無法理解。
有**有真相:
<?phperror_reporting(e_all
);class
stu
//這裡的 private 也可以用 protected public 替代
private
function __set($name, $value) }
$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
?>
結果分析:
如果沒有__get方法,執行 var_dump($s->a) var_dump($s->b) 會有致命的錯誤
如果沒有__get方法,執行 var_dump($s->e) 會有乙個notice,提示沒有定義屬性 $e
總結:
1. 從乙個難以訪問的屬性讀取資料的時候 __get() 方法被呼叫
2. 向乙個難以訪問的屬性賦值的時候 __set() 方法被呼叫
3. 難以訪問包括:(1)私有屬性,(2)沒有初始化的屬性
4. __isset() __unset() 也類似
**自
PHP 魔術方法 get
慢慢長尋夜,明月高空掛 get 讀取不可訪問屬性的值時,get set 在給不可訪問屬性賦值時,set 清晰的認識 get set class example 當給物件的乙個屬性賦值的時候如果該屬性不存在或者是非公有屬性則自動載入 set 方法 public function set name,va...
PHP魔術方法之 get 和
看 class stu public function set name,value 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 va...
PHP魔術常量和魔術方法詳解
一 魔術常量 line 檔案中的當前行號。file 檔案的完整路徑和檔名。如果用在被包含檔案中,則返回被包含的檔名。自 php 4.0.2 起,file 總是包含乙個絕對路徑 如果是符號連線,則是解析後的絕對路徑 而在此之前的版本有時會包含乙個相對路徑。dir 檔案所在的目錄。如果用在被包括檔案中,...