Serialisierung ist der Prozess der Konvertierung einer Variablen in eine Zeichenfolge, die gespeichert oder übertragen werden kann. Bei der Deserialisierung wird die Zeichenfolge in die ursprüngliche Variable umgewandelt, damit sie zum richtigen Zeitpunkt verwendet werden kann. Durch die Kombination dieser beiden Prozesse können Daten einfach gespeichert und übertragen werden, wodurch das Programm leichter wartbar wird. Brothers PHP-Training (www.lampbrother.net)
1. Serialisierungs- und Deserialisierungsfunktionen
Diese beiden sind Serialisierungs- und Deserialisierungsfunktionen Daten in PHP.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut' );
//Serialisiertes Array
$s = serialize($a);
echo $s; 3:{s:1:"a";s:5:"Apfel";s:1:"b";s:6:"Banane";s:1:"c";s:7:"Kokosnuss " ;}
echo '
';
//Deserialisierung
$o = unserialize($s)
print_r($o);
//Ausgabeergebnis-Array ( [a] => Apfel [b] => Banane [c] => Kokosnuss)
?>
Wenn Array-Werte Zeichen wie doppelte Anführungszeichen, einfache Anführungszeichen oder Doppelpunkte enthalten, können nach der Deserialisierung Probleme auftreten. Um dieses Problem zu lösen, besteht ein netter Trick darin, base64_encode und base64_decode zu verwenden.
$obj = array();
//Serialisierung
$s = base64_encode(serialize($obj)>//Inverse Serialisierung
$original = unserialize(base64_decode($s));
Aber die Base64-Kodierung erhöht die Länge der Zeichenfolge. Um dieses Problem zu lösen, kann es mit gzcompress verwendet werden.
//Definieren Sie eine Funktion zum Serialisieren von Objekten
function my_serialize( $obj )
{
return base64_encode(gzcompress(serialize($ obj)) );
}
//Deserialisierung
function my_unserialize($txt)
{
return unserialize (gzuncompress(base64_decode( $txt)));
}
2. json_encode und json_decode
JSON-Format zum Serialisieren und Deserialisieren verwenden Ist eine gute Wahl:
Mit den Formaten json_encode und json_decode ist die Ausgabe viel schneller als mit dem Serialisierungs- und Deserialisierungsformat.
JSON-Format ist lesbar.
Das JSON-Format gibt kleinere Daten zurück als die Serialisierung.
Das JSON-Format ist offen und portierbar. Andere Sprachen können es ebenfalls verwenden.
$a = array('a' => 'Apfel' ,'b' => 'Banane' , 'c' => 'Kokosnuss');
// Serialisiertes Array
$s = json_encode($a);
echo $s;
//Ausgabeergebnis: {"a": "Apple", "b" :"Banane", "c": "Kokosnuss"}
echo '
'
//Deserialisierung
$o = json_decode($s);
Im obigen Beispiel ist die Ausgabelänge von json_encode offensichtlich kürzer als die Ausgabelänge von serialize im vorherigen Beispiel.
3. var_export und eval
Die Funktion var_export gibt die Variable als String aus; eval führt den String als PHP-Code aus und umgekehrt . Durch die Serialisierung wird der Inhalt der Originalvariablen abgerufen.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//Serialisiertes Array
$s = var_export($a, true);
echo $s;
//Ausgabeergebnis: array ( 'a' => 'Apple', 'b' => 'banana', 'c' => ' Coconut ', )
echo '
'
//Deserialisierung
eval('$my_var=' . $s . ';');
print_r($my_var);
4. wddx_serialize_value und wddx deserialize
Die Funktion wddx_serialize_value kann Array-Variablen serialisieren und als XML-Strings ausgeben.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//Serialisiertes Array
$s = wddx_serialize_value($a);
echo $s;
//Ausgabeergebnis (Quellcode der Ausgabezeichenfolge anzeigen):
echo '
';
//Deserialisierung
$o = wddx_deserialize($s);
print_r($o); 🎜>//Ausgabeergebnis: Array ( [a] => Apple [b] => Banana 1 => Coconut )
Es ist ersichtlich, dass es viele XML-Tag-Zeichen gibt, was dazu führt Die Formatserialisierung nimmt immer noch viel Platz ein.
Zusammenfassung
Alle oben genannten Funktionen können beim Serialisieren von Array-Variablen normal ausgeführt werden, bei der Anwendung auf Objekte ist dies jedoch anders. Beispielsweise schlagen serialisierte json_encode-Objekte fehl. Beim Deserialisieren von Objekten haben Deserialisieren und Auswerten unterschiedliche Auswirkungen.