Heim  >  Artikel  >  Backend-Entwicklung  >  Welche Funktionen haben PHP-Magic-Methoden?

Welche Funktionen haben PHP-Magic-Methoden?

王林
王林Original
2020-09-11 15:19:364039Durchsuche

Die magischen Methoden und Funktionen von PHP sind: 1. __get, Aufruf undefinierter Attribute; 3. __call, Aufruf undefinierter Methoden; 5 , Objekt kopieren.

Welche Funktionen haben PHP-Magic-Methoden?

Die magischen Methoden und ihre Funktionen sind wie folgt:

(Empfohlenes Tutorial: php-Video-Tutorial)

1, __get, __set

Diese beiden Methoden sind in der Klasse und ihrer übergeordneten Klasse nicht deklariert Entwickelt für Eigenschaften

__get( $property ) Auf diese Methode wird zugegriffen, wenn eine undefinierte Eigenschaft aufgerufen wird

__set( $property, $value ) Wird aufgerufen, wenn einer undefinierten Eigenschaft ein Wert zugewiesen wird

Keine Deklaration hier beinhaltet Zugriffskontrolle Für geschützt, privat Eigenschaften (d. h. Eigenschaften ohne Zugriffsberechtigung)

2, __isset, __unset

__isset( $property ) Diese Methode wird aufgerufen, wenn die isset()-Funktion für eine undefinierte Eigenschaft aufgerufen wird

__unset( $ property ) Diese Methode wird aufgerufen wenn die Funktion unset() für eine undefinierte Eigenschaft aufgerufen wird. Dies ist dasselbe wie die Methode __get und die Methode no, die hier Attribute enthält, deren Zugriffskontrolle geschützt und privat ist (d. h. solche, die keine Zugriffsberechtigung haben). . Attribute)

3. __call


__call( $method, $arg_array ) Beim Aufruf einer undefinierten Methode (einschließlich keiner Zugriffsberechtigung) wird diese Methode

4 aufgerufen wurde noch nicht definiert. Automatisch aufgerufen. Diese Funktion gibt der Skript-Engine eine letzte Chance, die erforderlichen Klassen zu laden, bevor PHP mit einem Fehler abstürzt.

Hinweis: In der __autoload-Funktion ausgelöste Ausnahmen können vom Catch-Anweisungsblock nicht abgefangen werden und führen zu einem schwerwiegenden Fehler.

5, __construct, __destruct

__construct Konstruktor, diese Methode wird aufgerufen, wenn ein Objekt erstellt wird. Der Vorteil besteht darin, dass der Konstruktor einen eindeutigen Namen haben kann, unabhängig vom Namen der Klasse, in der er sich befindet Ändern der Klasse Wenn der Name verwendet wird, muss der Name der Konstruktormethode nicht geändert werden. Die Destruktormethode __destruct ruft diese Methode standardmäßig auf, bevor das Objekt zerstört wird (dh bevor es aus dem Speicher gelöscht wird). PHP gibt nur die vom Objekt belegten Eigenschaften frei und zerstört die mit dem Objekt verbundenen Ressourcen. Mit Destruktoren können Sie beliebigen Code ausführen, um den Speicher zu löschen, nachdem PHP entschieden hat, dass Ihr Skript nicht mehr mit dem Objekt verknüpft ist. Der Destruktor wird bei einer Funktion innerhalb des Namensraums aufgerufen. Bei globalen Variablen geschieht dies am Ende des Skripts. Wenn Sie ein Objekt explizit zerstören möchten, können Sie der Variablen einen beliebigen anderen Wert zuweisen Wenn Sie auf das Objekt zeigen, ist die Variablenzuweisung normalerweise immer NULL oder wird nicht gesetzt aufgerufen.

6. Die Objektzuweisung in PHP5 verwendet die Referenzzuweisung. Wenn Sie zum Kopieren eines Objekts die Methode __clone verwenden, können Sie diese verwenden Implementierung der __clone-Methode.

7. __toString

__toString-Methode wird automatisch aufgerufen, wenn ein Objekt in einen String umgewandelt wird. Wenn die Klasse diese Methode beispielsweise nicht implementiert, kann das Objekt nicht über Echo gedruckt werden wird angezeigt: Abfangbarer schwerwiegender Fehler: Das Objekt der Klasse test konnte nicht in einen String konvertiert werden, diese Methode muss einen String zurückgeben.

Vor PHP 5.2.0 kann die __toString-Methode nur wirksam werden, wenn sie in Verbindung mit echo() oder print() verwendet wird. Nach PHP 5.2.0 kann es in jeder String-Umgebung wirksam werden (z. B. über printf() unter Verwendung des Modifikators %s), kann jedoch nicht in Nicht-String-Umgebungen verwendet werden (z. B. unter Verwendung des Modifikators %d). Wenn ab PHP 5.2.0 ein Objekt, das die Methode __toString nicht definiert, in einen String konvertiert wird, wird ein E_RECOVERABLE_ERROR-Fehler gemeldet.

8, __sleep, __wakeup

__sleep Verwenden Sie __wakeup während der Serialisierung und rufen Sie

serialize() während der Deserialisierung auf, um zu überprüfen, ob es in der Klasse eine Funktion mit dem magischen Namen __sleep gibt. Wenn dies der Fall ist, wird die Funktion vor der Serialisierung ausgeführt. Es löscht das Objekt und sollte ein Array zurückgeben, das die Namen aller Variablen im Objekt enthält, die serialisiert werden sollen.

Der Zweck der Verwendung von __sleep besteht darin, alle Datenbankverbindungen des Objekts zu schließen, ausstehende Daten zu übermitteln oder ähnliche Bereinigungsaufgaben durchzuführen. Darüber hinaus ist diese Funktion auch dann sinnvoll, wenn Sie sehr große Objekte haben, die nicht komplett eingelagert werden müssen.

Im Gegensatz dazu prüft unserialize() die Existenz einer Funktion mit dem magischen Namen __wakeup. Diese Funktion kann alle Ressourcen rekonstruieren, über die das Objekt verfügt, sofern vorhanden. Der Zweck der Verwendung von __wakeup besteht darin, alle Datenbankverbindungen wiederherzustellen, die möglicherweise während der Serialisierung verloren gegangen sind, und andere Neuinitialisierungsaufgaben zu erledigen.

9. __set_state

Wenn var_export() aufgerufen wird, wird diese statische Methode aufgerufen (gültig seit PHP 5.1.0). Der einzige Parameter dieser Methode ist ein Array mit Klasseneigenschaften, die im Format array('property' => value, ...) angeordnet sind.

10. __invoke

Beim Versuch, ein Objekt durch Aufrufen einer Funktion aufzurufen, wird die __invoke-Methode automatisch aufgerufen. PHP5.3.0 oder höher ist gültig

11, __callStatic

Es funktioniert ähnlich wie die magische Methode __callStatic(). Es ist in PHP5.3.0 gültig und die Definition der Methode __callStatic() muss öffentlich sein. und muss als statisch deklariert werden. Ebenso muss die magische Methode __call() wie alle anderen magischen Methoden als öffentlich definiert werden.

Verwandte Empfehlungen: php-Training

Das obige ist der detaillierte Inhalt vonWelche Funktionen haben PHP-Magic-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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