php中那个__set()魔术方法到底有啥用??有没有通俗一点的解释?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中那个__set()魔术方法到底有啥用??有没有通俗一点的解释?相关的知识,希望对你有一定的参考价值。

参考技术A 当在给给不可访问属性赋值时 先调用__set(),要怎么通俗。。。。追问

……这个和普通的方法传值有什么区别?一个类中也有构造函数啊,为什么还要多出个set

追答

假如有 3个private属性 你用不同方法 赋值很麻烦吧,得对应的不同方法,__set()一个就行。构造函数只能在实例化的时候赋值

追问

是不是set可以直接赋值,无论你为哪个private值赋值都可以直接?而其他的话语言调用那个函数来赋值?

参考技术B class c
 
   public function __set($name, $value) 
    $this->$name = $value;

   
 
 public function __get($name)
    if($this->$name)
    return $this->$name; 
    else
    return 'sop';
    
    
 
 
 
 

$a = new c;
$a->p = 'on the tap/step';
var_export( $a->p);
var_export( $a->d);

追问

我想问这个set和那个构造函数有啥区别,两个都是可以往里面去传值

以上是关于php中那个__set()魔术方法到底有啥用??有没有通俗一点的解释?的主要内容,如果未能解决你的问题,请参考以下文章

PHP常用魔术方法(__set__get魔术方法:)

PHP魔术方法和魔术变量总结

PHP魔术方法

php魔术方法

php魔术方法

PHP 魔术方法之__set__get__unset__isset