慢慢長尋夜,明月高空掛
__get() - 讀取不可訪問屬性的值時,__get() 會被調用
__set() - 在給不可訪問屬性賦值時,__set() 會被調用
<?php /** * 清晰的認識__get() __set() */ class Example { //公有的屬性 public $public = 'pub' ; //受保護的 - 子類中該屬性可用 protected $protected = 'pro'; //私有的 - 只能此類使用此屬性 private $private = 'pri'; //當訪問對象中的屬性不存在或者非公有屬性的時候自動加載__get()方法 public function __get($name){ return '調用__get()方法:'.$name; } //當給對象的一個屬性賦值的時候如果該屬性不存在或者是非公有屬性則自動加載__set()方法 public function __set($name,$value){ echo "\nname:".$name.',value:'.$value."\n"; } } $example = new Example; echo '<pre>'; echo $example->public."\n"; echo $example->protected."\n"; echo $example->private."\n"; echo $example->other."\n"; echo '<hr>'; $example->public = 'lic'; //這個賦值成功所有沒有顯示 $example->protected = 'tec'; $example->private = 'vat'; $example->other = 'er'; echo '<br/>'; echo '打印 public 屬性:'.$example->public;
結果如下:
pub 調用__get()方法:protected 調用__get()方法:private 調用__get()方法:other name:protected,value:tec name:private,value:vat name:other,value:er 打印 public 屬性:lic