Heim > Artikel > Backend-Entwicklung > Was sind die Interceptor-Methoden in PHP?
PHP-Interceptor-Methoden umfassen: 1. „__get“-Methode, 2. „__set()“-Methode 3. „__isset()“-Methode; __call()“-Methode.
Welche Interceptor-Methoden bietet PHP
序号 | 方法名 | 作用 | 实现版本 |
1 | __get($property) | 访问未定义的属性时候,调用该方法 | >= PHP 5.3.0 |
2 | __set($property, $value) | 给未定义属性设置值的时候,调用该方法 | >= PHP 5.3.0 |
3 | __isset($property) | 对未定义属性调用isset()时,调用该方法 | >= PHP 5.1.0 |
4 | __unset($property) | 对未定义属性调用unset()时,调用该方法 | >= PHP 5.1.0 |
5 | __call($property, $args_array) | 调用未定义方法时,执行该方法 | >= PHP 5.3.0 |
Einzelheiten finden Sie unter http://php. net /manual/zh/sprache.oop5.magic.php Einführung
Was ist ein PHP-Interceptor?
Englischer Name „Interceptor“, seine Funktion besteht darin, Nachrichten abzufangen, die undefinierte Methoden und Attribute senden.
Sehen wir uns zunächst einen Codeabschnitt an, in dem ein Objekt $obj instanziiert wird und ein undefiniertes Attribut „lehrer“ erhalten wird.
<?php class School { } $obj = new School; var_dump($obj->teacher);
Wenn Sie die PHP-Befehlszeile zum Ausführen verwenden, können Sie sehen, dass PHP einen Hinweis auf undefinierte Attribute gemeldet hat. Der $obj->teacher-Wert ist ein Nullwert, also NULL
[root@localhost php]# php538 interceptor.php PHP Notice: Undefined property: School::$teacher in /usr/local/sina_mobile/apache/htdocs/php/interceptor.php on line 11NULLLassen Sie mich hier erklären, dass die Ausführung der PHP-Befehlszeile und die Ausführung der Browserseite nicht unbedingt identisch sind. Wir können den Screenshot unten sehen, wenn der Webserver dasselbe Skript ausführt Meldet dem Browser, dass PHP nicht enthalten ist. Es wird ein 200 OK an den Browser zurückgegeben. Es gibt Probleme mit der Interaktion zwischen PHP und Webserver. In Bezug auf den vorherigen Code denken wir, dass wir die Anrufanforderung an den Lehrer abfangen und dann einige Vorgänge ausführen können, wenn das Lehrerattribut beim Zugriff auf den Lehrer nicht vorhanden ist Dies ist der PHP-Interceptor. Der PHP-Interceptor stellt eine Vielzahl von Methoden bereit. Die __get-Methode wird hier aufgerufen, wenn auf undefinierte Attribute zugegriffen wird. Sehen wir uns den folgenden Code und die Ergebnisse an
<?php class School { function __get($var) { echo $var; echo "\r\n"; return "hello"; } public $name = "Tom"; } $obj = new School; var_dump($obj->teacher); var_dump($obj->name);Die Ergebnisse der folgenden Ausführung lauten wie folgt: Zur Erläuterung muss die __get-Methode einen Parameter haben, nämlich den Namen undefiniertes Attribut, das aufgerufen werden soll. Die Funktion gibt zurück. Das Ergebnis wird der unbekannten Eigenschaft des Aufrufs zugewiesen.
[root@localhost php]# php538 interceptor.php teacher string(5) "hello" string(3) "Tom"Weitere Informationen zu diesem Thema finden Sie auf der
PHP-Website für Chinesisch! !
Das obige ist der detaillierte Inhalt vonWas sind die Interceptor-Methoden in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!