Le rôle de __set() :
__set() : Lors de l'attribution d'une valeur à un attribut inaccessible (privé, protégé, n'existe pas), PHP exécutera le __set( ) méthode .
Comme nous l'avons dit plus haut, la fonction de __set() est la suivante : lors de l'attribution d'une valeur à un attribut inaccessible (privé, protégé, n'existe pas), PHP exécutera la méthode __set().
Qu'est-ce que cela signifie ? Par exemple, prenons l'exemple ci-dessus comme exemple. Nous avons remplacé les pêches que les singes aiment manger par des bananes, mais selon les règles, le mot-clé devant $food est protégé
et n'est pas accessible directement, mais nous devons attribuer une valeur à $food. faire?
<?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();
Comme notre $food est protégé, l'accès n'est pas autorisé. Ensuite, nous devons utiliser la méthode magique __set() pour y parvenir. La méthode __set() contient deux paramètres, représentant respectivement le nom et la valeur de la variable. Les deux paramètres ne peuvent pas être omis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!