Facebook
Twitter
Google+
Kommentare
0

Funktion der Woche: serialize()

Einleitung

Wie ihr aus dem Titel entnehmen könnt, führe ich die Serie “Funktion der Woche” ein. Jeden Montag, so die Theorie, werde ich eine Funktion vorstellen, die mir aufgefallen ist. Sei das Positiv, oder Negativ. Funktionen die ich als nützlich einstufe, Alternativen, alte, neue und vielleicht auch solche, die man meiner Meinung nach in Zukunft in PHP standardmässig finden sollte…

serialize()

Im Grunde genommen gibt die Funktion “serialize” einfach eine Zeichenkette zurück, die dem ihr übergebenen Wert entspricht. Dieser String kann dann zu einem späteren Zeitpunkt wieder zu dem Wert zurück “verwandelt” werden. Dazu verwendet man “unserialize“.

Das Ganze klingt zuerst sehr unspektakulär, kann aber ganz interessant sein…

Wofür könnte ich diese Funktion gebrauchen?

Dank “serialize” kann man Instanzen von Klassen in der Datenbank oder der Session abspeichern. Dies kann in einigen Fällen ganz nützlich sein.

Auch kann ich so eine Instanz einer Klasse an ein anderes (PHP-)Programm weitergeben. In zusammenhang mit AJAX kann dies sehr nützlich sein. Allerdings sollte man den String den man von “serialize” erhält erst noch mit base64 “kodieren”. Dies verhindert Probleme  mit anderen Kodierungen (ISO 8859, UTF-8 usw.). Falls die Klasse sensible Daten enthält, oder ein Sicherheitsrisiko besteht, sollte man den String noch verschlüsseln. Oder, noch besser, man lässt es ganz sein.

Natürlich kann man auch andere Typen serialisieren. Man könnte zum Beispiel auf die Idee kommen, das Session-Array in der Datenbank zu speichern.

Je nach Applikation könnte man also den gesamten aktuellen Status abspeichern. Dies würde dann Sinn machen, wenn man den User beim erneuten Login am selben Ort weiterarbeiten lassen möchte, wie er zuvor aufgehört hat.

Worauf muss ich achten?

Falls man ein Objekt serialisiert, und dieses an einem Ort abspeichert, an dem der User Zugriff hat, ist besondere Vorsicht geboten. In diesem Fall könnte man den String zusätzlich noch verschlüsseln. Ob es in diesem Fall aber Sinn macht, “serialize” zu verwenden, sei dahingestellt.

Auch einen Boolean kann man serialisieren. Allerdings kann es zu Problemen kommen, wenn man man einen “False-Boolean” mittels “unserialize” probiert zu “enserialisieren”. “unserialize” gibt in diesem Fall (korrekterweise) “False” zurück, genau wie bei einem Verarbeitungsfehler…

Weiterführende Links

Über den Autor

DeDu

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen