Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung der __sleep()-Methode in PHP

Detaillierte Erklärung der __sleep()-Methode in PHP

藏色散人
藏色散人Original
2019-07-23 14:54:2710307Durchsuche

__sleep(), wenn serialize() ausgeführt wird, wird diese Funktion zuerst aufgerufen.

Die 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 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.

Funktion:

Die Methode __sleep() 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;;

Code-Ausführungsergebnis:

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

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der __sleep()-Methode in PHP. 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