Maison >développement back-end >Problème PHP >Comment utiliser les méthodes magiques php __get() et __set()
"__set()" est automatiquement appelé lors de l'attribution d'une valeur à un attribut non défini, la syntaxe est "public function __set(key,value){}" "__get()" est appelé lorsqu'un attribut non défini est appelé, le la syntaxe est "fonction publique __get(nom){}".
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3
Les méthodes magiques en PHP commencent généralement par __ (deux traits de soulignement), et n'ont pas besoin d'être explicitement appelées mais automatiquement appelé sous certaines conditions.
魔术方法 | 作用 |
---|---|
__set() | 在给未定义的属性赋值时自动调用 |
__get() | 调用未定义的属性时自动调用 |
1. Méthode __set()
Lors de l'attribution d'une valeur à un attribut de classe qui est indéfini ou invisible dans l'environnement actuel, la méthode __set() sera automatiquement appelée. Le format syntaxique pour définir cette méthode est le suivant :
public function __set($key, $value){ ... ... ; }
Parmi eux, le paramètre $key est le nom de la variable à exploiter, et $value est la valeur de la variable $key.
【Exemple】Ce qui suit utilise un exemple simple pour démontrer l'utilisation de la méthode __set().
<?php class Website{ public $name; private $url; public function __set($key, $value){ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; ?>
Les résultats d'exécution sont les suivants :
为“url”赋值“https://www.php.cn/”失败! 为“title”赋值“PHP教程”失败!
En utilisant les caractéristiques de la méthode __set(), nous pouvons utiliser la méthode __set() pour attribuer ou modifier des propriétés dans la classe qui sont modifiées avec le mot-clé private. Comme indiqué ci-dessous :
<?php class Website{ public $name; private $url = ''; public function __set($key, $value){ if(isset($this->$key)){ $this -> $key = $value; }else{ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } public function getUrl(){ echo $this -> url; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; $object -> getUrl(); ?>
Les résultats d'exécution sont les suivants :
为“title”赋值“PHP教程”失败! https://www.php.cn/
2. Méthode __get()
Lors de l'appel ou de l'obtention d'attributs de classe non définis ou invisibles dans l'environnement actuel, la méthode __get() sera automatiquement appelée. . Le format syntaxique pour définir cette méthode est le suivant :
public function __get($name){ ... ... ; }
Le paramètre $name est le nom de la variable à opérer.
【Exemple】Ce qui suit utilise un exemple simple pour démontrer l'utilisation de la méthode __get().
<?php class Website{ public $url = 'https://www.php.cn/'; private $name = 'php中文网'; public function __get($name){ echo '获取:“'.$name.'”失败!'; } } $object = new Website(); echo $object -> url.'<br>'; echo $object -> name.'<br>'; echo $object -> title.'<br>'; ?>
Les résultats en cours d'exécution sont les suivants :
https://www.php.cn/ 获取:“name”失败! 获取:“title”失败!
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!