Maison  >  Article  >  développement back-end  >  Explication détaillée de l'instance de la méthode magique __set() (tutoriel avancé orienté objet php)

Explication détaillée de l'instance de la méthode magique __set() (tutoriel avancé orienté objet php)

巴扎黑
巴扎黑original
2017-04-18 18:15:322645parcourir

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 &#39;<br/>我是&#39; . $this->name . &#39;我喜欢吃&#39; . $this->food;
}
//魔术方法
function __get($pro_name){
//先判断$pro_name是否存在
if(isset($this -> $pro_name)){
return $this -> $pro_name;
}else{
echo &#39;属性值不存在&#39;;
}
}
function __set($pro_name,$value){
//先判断$pro_name是否存在
if(isset($this -> $pro_name)){
return $this -> $pro_name = $value;
}else{
echo &#39;属性值不存在&#39;;
}
$monkey = new Monkey(&#39;猴子&#39; , &#39;桃子&#39;)
$monkey -> sayHello();
echo &#39;猴子喜欢吃&#39; . $monkey -> food;
$monkey -> food = &#39;香蕉&#39;;
echo &#39;<br/>&#39;;
$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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn