Wozu dient die serialize()-Funktion von PHP?

Lesezeit: 4 Minuten

Benutzer-Avatar
Jason Davis

Ich habe gerade von der erfahren serialize() undunserialize() Funktionen. Was sind einige Verwendungen dafür? Ich kenne Leute, die Dinge serialisieren, um sie in eine Datenbank zu stellen. Können Sie mir einige Anwendungsbeispiele nennen, bei denen es hilfreich ist?

Ich sehe auch serialisierten Code in Javascript, ist das dasselbe? Kann eine serialisierte Zeichenfolge in Javascript mit PHP deserialisiert werden? unserialize()?

Benutzer-Avatar
Tyler Carter

Mit PHP serialize können Sie ein Array oder Objekt in Textform halten. Beim Zuweisen von Arrays zu Dingen wie $_SESSION ermöglicht es PHP, diese in einer Textdatei zu speichern und später neu zu erstellen. Serialize wird so für Objekte und Variablen verwendet. (Stellen Sie einfach sicher, dass Sie vorher die Klasse deklariert haben, die das Objekt verwendet.)

WordPress hingegen verwendet es für eine sehr ähnliche Methode, indem es die serialisierten Arrays direkt in einer Datenbank speichert. Wenn Sie eine Datenbank mit Schlüsseln => Werten führen, kann dies aufgrund der Flexibilität von Arrays sehr vorteilhaft sein. Sie können alles im Wertparameter speichern.

Und hier ist der Link (mit freundlicher Genehmigung des ersten Kommentators): http://us3.php.net/serialize

  • Du hast einfach nur gesagt Sie, ein Array in einer Textform zu halten was falsch ist. Sie können jeden Variablentyp serialisieren. Sie können sogar ein Objekt serialisieren. das einzige, was Sie beachten müssen, wenn Sie es sind unserialisierung Ein Objekt muss die Deklaration des Objekts haben, das Sie deserialisieren

    – Gabriel Sosa

    25. Juli 2009 um 2:32 Uhr

  • Übrigens, am Ende des Absatzes habe ich ursprünglich geschrieben, dass es sowohl für Objekte als auch für Arrays verwendet wurde.

    – Tyler Carter

    25. Juli 2009 um 2:38 Uhr

Ich sehe oft seralisierten Datenspeicher in der Datenbank, und das gefällt mir wirklich nicht:

  • Es ist wirklich schwierig, mit diesen Daten in SQL zu arbeiten: Wie schreiben Sie Bedingungen für serialisierte Daten? Noch schwieriger: Wie aktualisiert man es? Schreiben Sie wirklich ein PHP-Skript, das alle Zeilen abruft, diese deserialisiert, modifiziert, neu serialisiert und wieder in DB speichert? 🙁
  • An dem Tag, an dem Sie Ihre Daten zu einer anderen Software migrieren möchten, wird es mehr Arbeit erfordern, die Daten zu migrieren (und noch mehr Arbeit, wenn die neue Software nicht in PHP geschrieben ist, übrigens)

Trotzdem gebe ich zu, dass es eine einfache Möglichkeit ist, nicht genau definierte Daten zu speichern … und ich benutze es manchmal dafür …

Eine weitere Verwendung für die Serialisierung besteht darin, den Datenaustausch zwischen zwei Systemen zu erleichtern: Wenn Sie beispielsweise Objekte über eine Art Webdienst senden, müssen sie auf irgendeine Weise serialisiert werden.

Wenn die beiden Systeme PHP sind, könnten Sie sich vorstellen, sie zu verwenden serialize/unserialize. Aber auch hier, was ist, wenn eines der Systeme nicht mehr PHP ist? Die Verwendung von JSON oder SOAP ist wahrscheinlich die bessere Wahl: Anfangs etwas schwieriger, aber wahrscheinlich eine langfristigere Lösung, da diese Formate auch in anderen Sprachen bekannt sind.

Eine Sache verwende ich PHP’s serialize Die Funktion besteht darin, Daten im Cache zu speichern (wie der Cache des Benutzers von APC), in einer PHP-Anwendung: Sie können Objekte nicht so speichern, wie sie sind: Sie müssen sie serialisieren. Da der Cache nur von einer Anwendung verwendet wird, ist es nicht notwendig, ein Format zu verwenden, das vielen Sprachen bekannt ist; Serialisierung ist also in Ordnung … Und um Daten im Cache zu speichern, sollten Sie eine wirklich schnelle Serialisierungsfunktion verwenden – und Serialisierung ist ziemlich schnell ^^

  • Toller Kommentar Pascal! Wenn die Leute interessiert sind, gibt es auch diesen großartigen Beitrag, der json_encode und serialize vergleicht.

    – Mick

    22. Juni 2012 um 1:14 Uhr

Benutzer-Avatar
James Skidmore

benutze ich oft serialize um wichtige Informationen in der Datenbank zu speichern, für die es sich nicht lohnt, ein ganz neues Feld zu erstellen, die aber in Zukunft von Nutzen sein könnten.

Wenn der Benutzer beispielsweise ein Formular ausfüllt, aus dem ich nur einige Elemente speichere, die ich aber alle behalten möchte, falls ich sie später benötige, serialisiere ich das Array von Formularelementen und speichere es in der Datenbank.

  • Ja, so verwende ich es im Allgemeinen. Besonders wenn Sie eine unbekannte Anzahl von key=>val-Paaren (mit unbekannten Namen) haben, ist es schwierig, eine gute Datenbankstruktur zu erstellen, um damit umzugehen.

    – Christian

    24. Juli 2009 um 23:31 Uhr

  • @Christian: Schau dir das EAV-Muster an. Es ist überhaupt nicht schwierig und sogar viel flexibler, diese Art von Daten in einer Datenbank zu normalisieren.

    Benutzer19302

    24. Juli 2009 um 23:44 Uhr

  • Ich fing an, dafür json zu verwenden. ermöglichen Ihnen, die Daten auf a zu speichern mehr Standardformat als die PHP-Serialisierung

    – Gabriel Sosa

    25. Juli 2009 um 2:33 Uhr

  • @Nelson: Interessant, werde mir das EAV-Muster genauer ansehen. Danke für die Information!

    – Christian

    26. Juli 2009 um 3:47 Uhr

Benutzer-Avatar
Andrej Prochorow

Die Serialisierung wird verwendet, wenn Sie Daten außerhalb von PHP übergeben möchten, beispielsweise an Javascript.

Ja, es funktioniert oft, Strings, Integer und Strings so zu senden, wie sie sind, aber keine komplexeren Strukturen wie Arrays. Lesen Sie hier mehr über das Übergeben eines PHP-Arrays an Javascript.

Sie können Ihre Daten auch als JSON formatieren, das in vielen Sprachen weithin unterstützt wird, aber dann verlieren Sie bei der Konvertierung native PHP-Typen und Ihre eigenen Klassen. Lesen Sie hier mehr über JSON und PHP.

1187380cookie-checkWozu dient die serialize()-Funktion von PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy