„__set()“ wird automatisch aufgerufen, wenn einem undefinierten Attribut ein Wert zugewiesen wird, die Syntax lautet „public function __set(key,value){}“; „__get()“ wird aufgerufen, wenn ein undefiniertes Attribut aufgerufen wird Die Syntax lautet „öffentliche Funktion __get(name){}“.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
Magische Methoden in PHP beginnen normalerweise mit __ (zwei Unterstriche) und müssen nicht explizit aufgerufen werden, sondern automatisch unter bestimmten Voraussetzungen aufgerufen.
Magische Methode | Funktion |
---|---|
__set() | Wird automatisch aufgerufen, wenn einer undefinierten Eigenschaft ein Wert zugewiesen wird. |
__get() | Wird automatisch aufgerufen, wenn eine undefinierte Eigenschaft aufgerufen wird |
Wenn Sie einem Klassenattribut einen Wert zuweisen, der in der aktuellen Umgebung nicht definiert oder unsichtbar ist, wird die __set()-Methode automatisch aufgerufen. Das Syntaxformat zum Definieren dieser Methode lautet wie folgt:
public function __set($key, $value){ ... ... ; }
<?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教程'; ?>
为“url”赋值“https://www.php.cn/”失败! 为“title”赋值“PHP教程”失败!
<?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(); ?>
为“title”赋值“PHP教程”失败! https://www.php.cn/
2. __get()-Methode
Beim Aufrufen oder Abrufen undefinierter oder unsichtbarer Klassenattribute in der aktuellen Umgebung wird die __get()-Methode automatisch aufgerufen . Das Syntaxformat zum Definieren dieser Methode lautet wie folgt:
public function __get($name){ ... ... ; }
<?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>'; ?>
https://www.php.cn/ 获取:“name”失败! 获取:“title”失败!
PHP-Video-Tutorial
“Das obige ist der detaillierte Inhalt vonSo verwenden Sie die magischen PHP-Methoden __get() und __set(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!