Heim >Backend-Entwicklung >PHP-Tutorial >Verstehen Sie 11 magische Methoden in PHP in einer Minute

Verstehen Sie 11 magische Methoden in PHP in einer Minute

慕斯
慕斯nach vorne
2021-06-28 11:35:084574Durchsuche

Wir haben so viel über PHP gelernt. Ich frage mich, ob Sie die 11 magischen Methoden in PHP vollständig beherrschen. Wenn nicht, folgen Sie diesem Artikel, um mit dem Lernen fortzufahren.

Entwickelt für Eigenschaften, die nicht in der Klasse und ihrer übergeordneten Klasse deklariert sind.

__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 Eigenschaft
  • Das Fehlen von Deklarationen umfasst hier Eigenschaften, deren Zugriffskontrolle geschützt und privat ist (d. h. Eigenschaften ohne Zugriffsberechtigung)

2, __isset, __unset

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

    __unset( $property ) Diese Methode wird aufgerufen, wenn die unset()-Funktion für eine undefinierte Eigenschaft aufgerufen wird
  • Genauso wie die __get-Methode und die __set-Methode gibt es hier keine Deklarationen einschließlich Attributen, deren Zugriffskontrolle geschützt und privat ist (d. h. Attribute, die keine Zugriffsberechtigung haben)
3, __call


__call( $method, $arg_array ) beim Aufrufen einer undefinierten Methode (einschließlich keiner Zugriffsberechtigung). besteht darin, diese Methode aufzurufen

4, __autoload

__autoload-Funktion, die automatisch aufgerufen wird, wenn eine Klasse verwendet wird, die nicht definiert wurde. 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 Wenn Sie den Namen der Klasse ändern, müssen Sie den Namen der Konstruktormethode nicht ändern

    __destruct-Destruktormethode. PHP ruft diese Methode auf, bevor das Objekt zerstört wird (dh bevor es aus dem Speicher gelöscht wird)
  • Standardmäßig gibt PHP nur den von Objekteigenschaften belegten Speicher frei und zerstört die mit dem Objekt verbundenen Ressourcen. Mit Destruktoren können Sie beliebigen Code ausführen, um Speicher zu löschen, nachdem PHP entschieden hat, dass Ihr Skript nicht mehr mit dem Objekt verknüpft ist , wird der Destruktor aufgerufen., innerhalb des Namensraums einer Funktion, dies geschieht, wenn die Funktion zurückkehrt, bei globalen Variablen geschieht dies am Ende des Skripts, wenn Sie ein Objekt explizit zerstören möchten, können Sie eine beliebige Variable zuweisen zeigt auf das Objekt. Für andere Werte weisen Sie die Variable normalerweise auf NULL zu oder rufen unset auf.

6. __clone

Die Objektzuweisung in PHP5 verwendet die Referenzzuweisung, wenn das Objekt beim Kopieren des Objekts automatisch die magische Methode __clone aufruft Kann die Methodenimplementierung __clone durchführen.

7, __toString

__toString-Methode wird automatisch aufgerufen, wenn ein Objekt in eine Zeichenfolge konvertiert wird. Wenn die Klasse beispielsweise diese Methode nicht implementiert, kann das Objekt nicht über Echo gedruckt werden. Andernfalls wird Folgendes 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 nützlich, wenn Sie sehr große Objekte haben, die nicht vollständig eingelagert werden müssen.

Umgekehrt 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. __callStatic
Es funktioniert ähnlich wie die magische Methode __call(), um statische Methodenaufrufe zu verarbeiten for_ Definition der _callStatic()-Methode; sie muss öffentlich sein und als statisch deklariert werden. Ebenso muss die magische Methode __call() wie alle anderen magischen Methoden als öffentlich definiert werden.

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonVerstehen Sie 11 magische Methoden in PHP in einer Minute. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

In Verbindung stehende Artikel

Mehr sehen