首页 > 编程 > PHP > 正文

PHP 魔术方法之__set() __get() 方法

2019-11-08 02:45:42
字体:
来源:转载
供稿:网友

先看看官方文档的解释

__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 $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: 123var_dump($s->b); //output: 123var_dump($s->c); //output: nullvar_dump($s->d); //output: 0var_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)vardump(s->b) 会有致命的错误 如果没有__get 方法,执行 var_dump(s−>e)会有一个notice,提示没有定义属性e 总结:

从一个难以访问的属性读取数据的时候 __get() 方法被调用向一个难以访问的属性赋值的时候 __set() 方法被调用难以访问包括:(1)私有属性,(2)没有初

参考网址:

http://www.cnblogs.com/glory-jzx/archive/2012/05/23/2514173.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表