Ab PHP5 und späteren Versionen können Klassen magische Methoden verwenden. PHP legt fest, dass Methoden, die mit zwei Unterstrichen (__) beginnen, als magische Methoden reserviert sind. Daher wird empfohlen, dass Funktionsnamen nicht mit __ beginnen, es sei denn, dies dient dazu, vorhandene magische Methoden zu überlasten.
Zu den vorhandenen magischen Methoden in PHP gehören __construct, __destruct, __call, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __set_state und __clone.
In diesem Abschnitt geht es um die Verwendung von __get, __set:
__get() – Beim Lesen des Werts eines unzugänglichen Attributs wird __get() aufgerufen
__set() – Wenn einer unzugänglichen Eigenschaft ein Wert zugewiesen wird, wird __set() aufgerufen
<?php /** * 清晰的认识__get() __set() */ class Example { //公有的属性 public $public = 'pub' ; //受保护的 - 子类中该属性可用 protected $protected = 'pro'; //私有的 - 只能此类使用此属性 private $private = 'pri'; //当访问对象中的属性不存在或者非公有属性的时候自动加载__get()方法 public function __get($name){ return '调用__get()方法:'.$name; } //当给对象的一个属性赋值的时候如果该属性不存在或者是非公有属性则自动加载__set()方法 public function __set($name,$value){ echo "\nname:".$name.',value:'.$value."\n"; } } $example = new Example; echo '<pre class="brush:php;toolbar:false">'; echo $example->public."\n"; echo $example->protected."\n"; echo $example->private."\n"; echo $example->other."\n"; echo '<hr>'; $example->public = 'lic'; //这个赋值成功所有没有显示 $example->protected = 'tec'; $example->private = 'vat'; $example->other = 'er'; echo '<br/>'; echo '打印 public 属性:'.$example->public;
Das Ergebnis ist wie folgt:
<span>pub 调用__get()方法:</span><span>protected</span><span> 调用__get()方法:</span><span>private</span><span> 调用__get()方法:other name:</span><span>protected</span>,value:<span>tec name:</span><span>private</span>,value:<span>vat name:other</span>,value:<span>er 打印 </span><span>public</span> 属性:lic
Das Obige stellt die PHP-Magic-Methode vor: __get __set, einschließlich des Inhalts der PHP-Magic-Methode. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.