__sleep() ist eine spezielle magische Funktion in PHP, die aufgerufen wird, wenn ein Objekt serialisiert wird. Wenn wir ein Objekt in einen String serialisieren und in einer Datei speichern oder an andere Systeme übergeben müssen, ruft PHP automatisch die Funktion __sleep() auf. Dieser Artikel befasst sich mit der Verwendung und dem Mechanismus der Funktion __sleep().
Das Prinzip der Funktion __sleep()
Wenn PHP ein Objekt in einen String serialisieren muss, prüft es zunächst, ob die Funktion __sleep() für das Objekt definiert ist. Wenn sie definiert ist, ruft PHP zuerst __sleep() auf. Funktion und führt darin Vorgänge aus, bevor Sie Serialisierungsvorgänge durchführen. Der Rückgabewert der Funktion __sleep() muss ein Array sein, das die Namen der Attribute enthält, die serialisiert werden müssen.
Zum Beispiel definieren wir ein Person-Objekt, das zwei Attribute enthält: Name und Alter. Der Code lautet wie folgt:
class Person { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function __sleep() { return array('name', 'age'); } } $person = new Person('张三', 20); $str = serialize($person); var_dump($str);
Im obigen Code schreiben wir die Funktion __sleep() neu und geben den Namen und das Alter an, die benötigt werden serialisiert werden. Wenn wir die Funktion serialize() aufrufen, um das Objekt $person in einen String zu serialisieren, ruft PHP automatisch die Funktion __sleep() auf und gibt ein Array zurück, das Name und Alter enthält.
Hinweise zur Funktion __sleep()
Anwendungsszenarien der Funktion __sleep()
Die Funktion __sleep() kann verwendet werden, um die Attribute zu steuern, die bei der Serialisierung von Objekten serialisiert werden müssen, indem bestimmte Attribute in der Funktion __sleep() ausgeschlossen werden , oder in einigen Fällen die Serialisierungsleistung verbessern.
Zum Beispiel möchten wir in einem Benutzerobjekt mit einem Kennwort nicht, dass das Kennwortattribut in eine Datei serialisiert oder an andere Systeme übergeben wird. Wir können dieses Attribut ausschließen, indem wir __sleep() überschreiben. Funktion:
class User { public $name; public $password; public function __construct($name, $password) { $this->name = $name; $this->password = $password; } public function __sleep() { return array('name'); } } $user = new User('张三', '123456'); $str = serialize($user); var_dump($str);
Im obigen Code haben wir das Kennwortattribut ausgeschlossen, das nicht in eine Datei serialisiert oder an andere Systeme übergeben wird.
Zusammenfassung
In PHP ist die Funktion __sleep() eine sehr nützliche magische Funktion. Sie kann die Attribute steuern, die bei der Serialisierung eines Objekts serialisiert werden müssen, die Sicherheit sensibler Daten schützen oder die Serialisierungsleistung verbessern. Wenn Sie die Funktion __sleep() verwenden, müssen Sie beachten, dass der Rückgabewert ein Array sein muss, das die Attribute enthält, die serialisiert werden müssen, andernfalls schlägt der Serialisierungsvorgang fehl. Wenn die Funktion __sleep() in einem Objekt definiert ist, die Funktion __wakeup() jedoch nicht, werden alle Attribute des Objekts während der Deserialisierung gelöscht und sollten nach Bedarf definiert werden.
Das obige ist der detaillierte Inhalt vonErkundung der magischen PHP-Funktionen: __sleep(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!