Posted in PHP onNovember 25, 2014
__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
PHP魔术方法__GET、__SET使用实例
- Author -
junjie声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@