魔术方法__set()实例详解(php面向对象高级教程)
程序员文章站
2022-03-27 17:37:15
...
__set()的作用:
__set():在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。
上面我们说了__set()的作用是:在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。
这个是什么意思呢。比如说,我们还是以上面的实例为例。我们把猴子喜欢吃的桃子换成香蕉,但是根据规则来说,$food前面的关键词是protected
,不能直接访问,但是我们又需要对$food赋值,我们该怎么办呢?
<?php class Monkey{ public $name; protected $food; function __construct($name,$food){ $this->name = $name; $this->food = $food; } function sayHello(){ echo '<br/>我是' . $this->name . '我喜欢吃' . $this->food; } //魔术方法 function __get($pro_name){ //先判断$pro_name是否存在 if(isset($this -> $pro_name)){ return $this -> $pro_name; }else{ echo '属性值不存在'; } } function __set($pro_name,$value){ //先判断$pro_name是否存在 if(isset($this -> $pro_name)){ return $this -> $pro_name = $value; }else{ echo '属性值不存在'; } $monkey = new Monkey('猴子' , '桃子') $monkey -> sayHello(); echo '猴子喜欢吃' . $monkey -> food; $monkey -> food = '香蕉'; echo '<br/>'; $monkey -> sayHello();
因为我们的$food是保护的,所以不允许访问。那么,我们就要借助__set()魔术方法来实现。__set()方法包含两个参数,分别表示变量名称和变量值,两个参数不可省略。
以上就是魔术方法__set()实例详解(php面向对象高级教程)的详细内容,更多请关注其它相关文章!
上一篇: php开发宽泛用什么开发工具
下一篇: php7不支持mysql吗
推荐阅读
-
php面向对象高级-魔术方法与迭代器
-
详解php的魔术方法__get()和__set()使用介绍_PHP教程
-
php 面向对象中的魔术方法_PHP教程
-
php (十四) 面向对象 魔术方法 __set()、__get()、__isset() 与 __unset()
-
php面向对象中final类与final方法用法实例详解
-
php面向对象中的魔术方法中文说明_PHP教程
-
php (十四) 面向对象 魔术方法 __set()、__get()、__isset() 与 __unset()
-
php面向对象中的魔术方法中文说明_PHP教程
-
php面向对象重载新的方法实例详解
-
PHP5面向对象详解 - (10) __set() __get() __isset() __unset()四个方法_PHP教程