__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()方法包含两个参数,分别表示变量名称和变量值,两个参数不可省略。
立即学习“PHP免费学习笔记(深入)”;
以上就是魔术方法__set()实例详解(php面向对象高级教程)的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号