首页  >  文章  >  后端开发  >  魔术方法__set()实例详解(php面向对象高级教程)

魔术方法__set()实例详解(php面向对象高级教程)

巴扎黑
巴扎黑原创
2017-04-18 18:15:322500浏览

__set()的作用:

__set():在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。

上面我们说了__set()的作用是:在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。

这个是什么意思呢。比如说,我们还是以上面的实例为例。我们把猴子喜欢吃的桃子换成香蕉,但是根据规则来说,$food前面的关键词是protected
,不能直接访问,但是我们又需要对$food赋值,我们该怎么办呢?

name = $name;
$this->food = $food;
}
function sayHello(){
echo '
我是' . $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 '
'; $monkey -> sayHello();

因为我们的$food是保护的,所以不允许访问。那么,我们就要借助__set()魔术方法来实现。__set()方法包含两个参数,分别表示变量名称和变量值,两个参数不可省略。

以上是魔术方法__set()实例详解(php面向对象高级教程)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn