Forum und email

Die "magischen" Funktionen __sleep und __wakeup

serialize() prüft, ob Ihre Klasse eine Funktion mit dem magischen Namen __sleep enthält. Wenn dem so ist, wird diese Funktion vor einer Serialisierung ausgeführt. Sie kann das Objekt aufräumen und soll ein Array mit den Namen aller Variablen des zu serialisierenden Objektes zurückgeben.

Die beabsichtigte Verwendung von __sleep ist, eventuelle Datenbankverbindungen des Objektes zu schließen, noch offene Daten zu committen, oder ähnliche Säuberungsaktionen durchzuführen. Weiters ist diese Funktion hilfreich, wenn Sie sehr große Objekte haben, die nicht komplett gespeichert werden müssen.

Umgekehrt prüft unserialize() die Existenz einer Funktion mit dem magischen Namen __wakeup. Ist diese vorhanden, kann sie Ressourcen des Objektes rekonstruieren.

Die vorgesehene Verwendung von __wakeup ist die Wiederherstellung von Datenbankverbindungen, welche während der Serialisierung verloren gegangen sein könnten, sowie andere Neuinitialisierungen.