thomas: Was bringen serialize() und unserialize() ?

Hallo liebes Forum!

Ich beziehe mich hier auf folgenden Thread:
http://forum.de.selfhtml.org/?t=35472&m=193564

  1. Empfehlung: Benutze für die Speicherung von Variablen und Datenstrukturen  in Low-Level-Dateien die Funktionen serialize() und unserialize().Das lohnt sich immer schon dann, wenn man später mal wieder was hinzufügen oder weglassen muss. Du musst nur einen einzigen Zugriff machen und alle Variablen stehen Dir wieder mundgerecht zur Verfügung.<<

Aber was soll das genau bringen? Bei der Erklärung auf php.net versteh ich nur Bahnhof (die haben immer so leicht durchschaubare Beispiele :) )! Hat da vielleicht jemand ein verständliches Beispiel parat?

thomas.

  1. Hallo Thomas,

    Aber was soll das genau bringen? Bei der Erklärung auf php.net versteh ich nur Bahnhof (die haben immer so leicht durchschaubare Beispiele :) )! Hat da vielleicht jemand ein verständliches Beispiel parat?

    Also: serialize verwandelt PHP-Datenstrukturen in eine lange Zeichenkette. unserialize macht das ganze umgekehrt. Wenn Du eine komplexe PHP-Datenstruktur (Array, Object, etc.) einfach abspeichern willst, dann jage sei durch serialize. Dann kannst Du später wieder unserialize über sie laufen lassen und hast _exakt_ die gleiche Struktur in PHP wieder. (Bei Objekten musst Du vorsichtig sein: die Klasse, von denen Du Objekte erzeugt hast, die Du serialisiert, sollte auch wieder _vor_ dem unserialize zur Verfügung stehen (d.h. die Definition per include oder require eingebunden) da sonst unserialize nicht vollständig arbeitet)

    Beispiel:

    <?php

    Header ('Content-Type: text/plain');

    $a = array (
    'hallo' => 'gggg',
    'hhh' => array ('a' => 'b', 'c' => 'd'),
    'h' => array (1, 2, 3)
    );

    var_dump ($a);

    $b = serialize ($a);

    echo "\n$b\n";

    $c = unserialize ($b);

    var_dump ($c);

    ?>

    Jetzt klarer?

    Christian

    --
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
    1. Danke für die Erklärung, aber ich wollte eher wissen, was das im Bezug auf die Arbeit mit Dateien für Vorteile hat.

      thomas.

      1. Hallo Thomas,

        aber ich wollte eher wissen, was das im Bezug auf die Arbeit mit Dateien für Vorteile hat.

        Wer lesen kann, ist klar im Vorteil. Asche über mein Haupt... (naja, wenigstens gibt's jetzt was fürs Archiv)

        Mal angenommen, Du hast ein Gästebuch, dann kannst Du ja jeden einzelnen Eintrag so abbilden:

        $eintrag = array (
        'autor' => 'Thomas',
        'datum' => 1056478584, // irgendein Timestamp halt, ich hab' mal wild drauflosgetippt
        'email' => '',
        'text' => 'hier kommt der Text rein'
        );

        Alle Einträge speicherst Du dann in einem Array ab. Dieses Array serialisierst Du dann und speicherst es in einer Datei. So kannst Du ganz einfach Adminfunktionen für das Gästebuch schreiben, ohne groß Gedanken über die Art der Speicherung bzw. wie Du Einträge löscht, etc. zu machen.

        Ich hoffe, _jetzt_ habe ich Dir helfen können, wenn nicht, sollte ich vielleicht mal ins Bett gehen.

        Christian

        --
        Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
  2. Moin!

    Aber was soll das genau bringen? Bei der Erklärung auf php.net versteh ich nur Bahnhof (die haben immer so leicht durchschaubare Beispiele :) )! Hat da vielleicht jemand ein verständliches Beispiel parat?

    Die Funktion serialize() wandelt eine beliebig komplexe Variable (z.B. ein Array) in einen String. Strings lassen sich beispielsweise gut in Datenbanken und Textdateien abspeichern.

    Um aus dem String wieder die Variable zu erhalten, benutzt man dann unserialize().

    Die Funktionen bringen dir also dann etwas, wenn du:

    • eine komplexe Variable abspeichern und wiederherstellen willst und dabei wenig Aufwand wünschst
    • auf einen einzelnen Variableninhalt im Zustand der Speicherung nicht zugreifen mußt. Die Wiederherstellung geht nur ganz oder gar nicht.

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)