详解php的魔术方法__get()和__set()使用介绍
发布时间:2020-12-13 06:10:33 所属栏目:PHP教程 来源:网络整理
导读:先看看php官方文档的解释: set() is run when writing data to inaccessible properties. get() is utilized for reading data from inaccessible properties. 究竟用中文怎么翻译呢? inaccessible :n. 难达到;难接近;无法理解。 有代码有真相: div cla
先看看php官方文档的解释: 究竟用中文怎么翻译呢? inaccessible :n. 难达到;难接近;无法理解。 有代码有真相: <div class="codetitle"><a style="CURSOR: pointer" data="87658" class="copybut" id="copybut87658" onclick="doCopy('code87658')"> 代码如下:<div class="codebody" id="code87658"> <?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 ?> 结果分析:如果没有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() 也类似 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |