Was sind die Interceptor-Methoden in PHP?

黄舟
Freigeben: 2023-03-15 11:48:01
Original
4906 Leute haben es durchsucht

PHP-Interceptor-Methoden umfassen: 1. „__get“-Methode, 2. „__set()“-Methode 3. „__isset()“-Methode; __call()“-Methode.

Was sind die Interceptor-Methoden in PHP?

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);
Nach dem Login kopieren

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

<🎜 wird gedruckt. >
[root@localhost php]# php538 interceptor.php 
PHP Notice:  Undefined property: School::$teacher in /usr/local/sina_mobile/apache/htdocs/php/interceptor.php on line 11NULL
Nach dem Login kopieren
Lassen 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.

1 (1).png

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);
Nach dem Login kopieren
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"
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!