Wenn Sie diesen Namen sehen, vermittelt er Ihnen ein sehr hochwertiges Gefühl. Ja, magische Methoden sind tatsächlich fortgeschritten.
Also, was ist eine magische Methode?
Methoden, die in PHP mit zwei Unterstrichen beginnen, werden „Magic-Methoden“ genannt. Zum Beispiel die zuvor erwähnten __construct(), __destruct(), __clone() und __call(),,__get(), __set(),__sleep(), __wakeup(), __toString(), __autoload() usw. , Das sind alles magische Methoden.
Wenn Sie möchten, dass PHP diese magischen Methoden aufruft, müssen Sie sie zuerst in der Klasse definieren, andernfalls führt PHP nicht erstellte magische Methoden nicht aus.
Hinweis:
Die Magic-Methode ist in PHP festgelegt, sodass Sie sie nicht selbst erstellen können. Sie können nur das verwenden, was bereits in PHP vorhanden ist, andernfalls wird ein Fehler gemeldet.
Im Folgenden stellen wir unter vielen Zaubermethoden die am häufigsten verwendeten Zaubermethoden vor.
__get() funktioniert wie folgt:
__get(): Beim Lesen des Werts eines unzugänglichen Attributs (privat, geschützt, nicht vorhanden) führt PHP __get aus ()-Methode.
Schauen wir uns ein Beispiel zu __get() an:
<?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; } } $monkey = new Monkey('猴子' , '桃子') $monkey -> sayHello();
Das obige Beispiel ist das Wissen über Klassen, über die wir zuvor gesprochen haben, das Erstellen von Klassen, das Erstellen von Methoden und das Instanziieren . Zuletzt besucht.
Jetzt stellen wir eine neue Anforderung vor, das heißt, wir müssen $food direkt außerhalb der Klasse aufrufen. Dann werden einige Leute sagen, dass $food ein geschütztes Attribut ist und nicht direkt aufgerufen werden kann. Aber die Forderung besteht darin, dies zu tun. Was sollen wir tun? Hier kommt unsere magische Methode __get() zum Einsatz. Schauen Sie sich den folgenden Code an:
<?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 '属性值不存在'; } } } $monkey = new Monkey('猴子' , '桃子') $monkey -> sayHello(); echo '猴子喜欢吃' . $monkey -> food;
Bevor wir die magische Methode verwenden, müssen wir zunächst feststellen, ob $pro_name vorhanden ist. Denn im obigen Beispiel ruft $pro_name food auf und food existiert, sodass es aufgerufen werden kann. Wenn jedoch Lebensmittel durch etwas anderes ersetzt werden, das nicht existiert, z. B. a, wird die Methode __get() aufgerufen, es wird jedoch ein Fehler gemeldet, der besagt, dass a nicht existiert. Daher müssen wir zunächst ein Urteil fällen.
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der Instanz der magischen Methode __get() (PHP-Tutorial für fortgeschrittene Objekte 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!