Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeutet die PHP-__sleep-Methode?

Was bedeutet die PHP-__sleep-Methode?

青灯夜游
青灯夜游Original
2021-02-24 16:40:513802Durchsuche

In PHP ist „__sleep()“ eine magische Methode, die zuerst aufgerufen wird. Sie kann verwendet werden, um das Objekt zu bereinigen und einen Variablennamen zurückzugeben, der alle Variablennamen im enthält Objekt, das serialisiert werden soll. Die Methode „__sleep()“ wird häufig verwendet, um nicht festgeschriebene Daten oder ähnliche Bereinigungsvorgänge zu übermitteln.

Was bedeutet die PHP-__sleep-Methode?

Die Betriebsumgebung dieses Tutorials: Windows7-System, PHP8-Version, DELL G3-Computer

Detaillierte Erläuterung der __sleep()-Methode in PHP

__sleep(), wenn serialize() ist Wenn sie ausgeführt wird, wird sie zuerst aufgerufen. Diese Funktion

serialize() prüft, ob es in der Klasse eine magische Methode __sleep() gibt. Wenn vorhanden, wird diese Methode zuerst aufgerufen und dann der Serialisierungsvorgang ausgeführt.

Diese Funktion kann verwendet werden, um das 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 generiert.

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.

Funktion:

__sleep()-Methode wird oft verwendet, um nicht festgeschriebene Daten oder ähnliche Reinigungsvorgä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.

Weitere Informationen finden Sie im folgenden Code:

<?php
class Person
{
    public $sex;
    public $name;
    public $age;
    public function __construct($name="",  $age=25, $sex=&#39;男&#39;)
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
    /**
     * @return array
     */
    public function __sleep() {
        echo "当在类外部使用serialize()时会调用这里的__sleep()方法<br>";
        $this->name = base64_encode($this->name);
        return array(&#39;name&#39;, &#39;age&#39;); // 这里必须返回一个数值,里边的元素表示返回的属性名称
    }
}
$person = new Person(&#39;小明&#39;); // 初始赋值
echo serialize($person);
echo &#39;<br/>&#39;;

Ergebnisse der Codeausführung:

当在类外部使用serialize()时会调用这里的__sleep()方法
O:6:"Person":2:{s:4:"name";s:8:"5bCP5piO";s:3:"age";i:25;}

Erweiterte Kenntnisse:

Magische Methode

Beim Ausnutzen der PHP-Deserialisierung ist es häufig erforderlich, die Deserialisierung zu verwenden Überprüfen Sie bei der magischen Methode, ob die Methode sensible Vorgänge enthält, die ausgenutzt werden können.

PHP reserviert alle Klassenmethoden, die mit __ (zwei Unterstriche) beginnen, als magische Methoden.

Gemeinsame magische Methoden

__construct() // Wird ausgelöst, wenn das Objekt erstellt wird.

__destruct() // Wird ausgelöst, wenn das Objekt zerstört wird.

__call() // Wird ausgelöst, wenn eine unzugängliche Methode im Objekt aufgerufen wird context

__callStatic() // Wird ausgelöst, wenn eine unzugängliche Methode in einem statischen Kontext aufgerufen wird

__get() // Wird zum Lesen von Daten aus unzugänglichen Eigenschaften verwendet

__set() // Wird zum Schreiben von Daten in unzugängliche Eigenschaften verwendet

__isset () //Wird ausgelöst, wenn isset() oder empty() für eine unzugängliche Eigenschaft aufgerufen wird

__unset() //Wird ausgelöst, wenn unset() für eine unzugängliche Eigenschaft verwendet wird

__invoke() //Wenn ausgelöst, wenn ein Skript versucht um ein Objekt als Funktion aufzurufen

__sleep() //Diese Funktion kann verwendet werden, um das Objekt zu bereinigen und ein Array zurückzugeben, das die Namen aller Variablen im Objekt enthält, die serialisiert werden sollen.

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

Offizielles Dokument zur magischen PHP-Methode: https://www.php.net/manual/zh/sprache.oop5.magic.php

[Lernempfehlung: „PHP-Video-Tutorial“]

Das obige ist der detaillierte Inhalt vonWas bedeutet die PHP-__sleep-Methode?. 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