Heim > Backend-Entwicklung > PHP-Problem > Was sind die magischen Methoden von PHP?

Was sind die magischen Methoden von PHP?

(*-*)浩
Freigeben: 2023-02-25 21:36:02
Original
2836 Leute haben es durchsucht

Bei der objektorientierten Programmierung stellt PHP eine Reihe magischer Methoden bereit, die viel Komfort beim Programmieren bieten. Magische Methoden in PHP beginnen normalerweise mit __ (zwei Unterstrichen) und erfordern keine expliziten Aufrufe, sondern werden durch bestimmte Bedingungen ausgelöst.

Was sind die magischen Methoden von PHP?

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), Methoden wie __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() und __debugInfo() werden in PHP Magic-Methoden genannt. (Empfohlenes Lernen: PHP-Video-Tutorial)

Hinweis: Sie können diese Methodennamen nicht verwenden, wenn Sie Ihre eigenen Klassenmethoden benennen, es sei denn, Sie möchten diese verwenden magische Funktion.

Hinweis: PHP reserviert alle Klassenmethoden, die mit __ (zwei Unterstriche) beginnen, als magische Methoden. Daher wird beim Definieren von Klassenmethoden mit Ausnahme der oben genannten magischen Methoden empfohlen, ihnen kein __ voranzustellen.

__sleep() und __wakeup()

public __sleep ( void ) : array
__wakeup ( void ) : void
Nach dem Login kopieren

serialize()-Funktion prüft, ob es eine magische Methode __sleep() in der Klasse gibt. Falls vorhanden, wird diese Methode zuerst aufgerufen und dann der Serialisierungsvorgang ausgeführt. Diese Funktion kann verwendet werden, um ein Objekt zu bereinigen und ein Array zurückzugeben, das die Namen aller Variablen im Objekt enthält, die serialisiert werden sollen. Wenn die Methode nichts zurückgibt, wird NULL serialisiert und ein Fehler auf E_NOTICE-Ebene ausgelöst.

Hinweis:

__sleep() kann den Namen des privaten Mitglieds der übergeordneten Klasse nicht zurückgeben. Dadurch wird ein Fehler auf E_NOTICE-Ebene generiert. Stattdessen kann die Serializable-Schnittstelle verwendet werden.

Die Methode __sleep() wird oft verwendet, um nicht festgeschriebene Daten oder ähnliche Bereinigungsvorgänge zu übermitteln. Gleichzeitig ist diese Funktion nützlich, wenn Sie über einige große Objekte verfügen, diese aber nicht alle speichern müssen.

Im Gegensatz dazu prüft unserialize(), ob es eine __wakeup()-Methode gibt. Wenn vorhanden, wird zuerst die Methode __wakeup aufgerufen, um die vom Objekt benötigten Ressourcen im Voraus vorzubereiten.

__wakeup() wird häufig bei Deserialisierungsvorgängen verwendet, z. B. beim Wiederherstellen einer Datenbankverbindung oder beim Durchführen anderer Initialisierungsvorgänge.

<?php
class Connection 
{
    protected $link;
    private $server, $username, $password, $db;
    
    public function __construct($server, $username, $password, $db)
    {
        $this->server = $server;
        $this->username = $username;
        $this->password = $password;
        $this->db = $db;
        $this->connect();
    }
    
    private function connect()
    {
        $this->link = mysql_connect($this->server, $this->username, $this->password);
        mysql_select_db($this->db, $this->link);
    }
    
    public function __sleep()
    {
        return array(&#39;server&#39;, &#39;username&#39;, &#39;password&#39;, &#39;db&#39;);
    }
    
    public function __wakeup()
    {
        $this->connect();
    }
}
?>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas sind die magischen Methoden von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
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