Speicherung und Übertragung von PHP-Objekten (Objekte serialisieren)
Speicherung und Übertragung von Objekten
In tatsächlichen Projektanwendungen sind einige Aufgaben eins oder zwei Seiten können nicht abgeschlossen werden, da die Variablen nach der Ausführung des Skripts freigegeben werden, und die Objekte, die wir auf dieser Seite generieren, geraten in Schwierigkeiten, wenn wir sie auf anderen Seiten verwenden möchten.
Wenn wir das Objekt und seine Methoden an die Seite übergeben müssen, auf der wir das Objekt verwenden möchten, besteht eine einfachere und praktikablere Möglichkeit darin, das Objekt zu serialisieren und zu speichern oder es direkt auf die Seite zu übertragen, auf der es sich befindet Eine andere Möglichkeit ist die Registrierung als Sitzungsvariable.
Serialisiertes Objekt
Bei der Objektserialisierung geht es darum, das Objekt in einen speicherbaren Bytestrom umzuwandeln. Wenn wir ein Objekt über das Netzwerk übertragen oder in eine Datei oder Datenbank schreiben müssen, müssen wir das Objekt serialisieren.
Der gesamte Serialisierungsprozess umfasst zwei Schritte: Der eine ist die Serialisierung, bei der das Objekt in eine Binärzeichenfolge umgewandelt wird. Die Funktion „serialize()“ wird zum Serialisieren eines Objekts verwendet Konvertieren Sie das Objekt in eine Binärzeichenfolge. Das Objekt wird in eine Binärzeichenfolge serialisiert und dann in ein Objekt umgewandelt. Die Funktion unserialize() wird verwendet, um ein serialisiertes Objekt zu deserialisieren. Auf diese Weise sind nach dem gesamten Prozess die Typstruktur und die Daten innerhalb des Objekts vollständig.
Syntax:
string serialize( gemischter Wert)
mixed unserialize( string str [, string callback] )
Beispiel:
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name."<br />"; echo " 我的年龄是:".$this->age; } } $p1 = new Person("张三", 20); $p1_string = serialize($p1); //将对象序列化后写入文件 $fh = fopen("p1.text", "w"); fwrite($fh, $p1_string); fclose($fh); ?>
Öffnen Sie die Datei p1.text und der darin geschriebene Inhalt lautet wie folgt:
O:6:"Person":2:{s:12:" Personenname";s:4 :"Zhang San ";s:11:" Personenalter";i:20;}
Aber normalerweise werden die durch die obige Serialisierung generierten Zeichen nicht direkt analysiert.
Deserialisierung:
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name."<br />"; echo " 我的年龄是:".$this->age; } } $p2 = unserialize(file_get_contents("p1.text")); $p2 -> say(); ?>
Führen Sie dieses Beispiel aus, Ausgabe:
Mein Name ist: Zhang San
Mein Alter ist: 20