Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen PHP Serialize() und Unserialize()

Der Unterschied zwischen PHP Serialize() und Unserialize()

墨辰丷
墨辰丷Original
2018-05-17 14:01:412392Durchsuche

In diesem Artikel werden hauptsächlich einige Unterschiede zwischen PHP Serialize() und Unserialize() vorgestellt. Freunde in Not können sich auf

Die Erklärung von Serialize() und Unserialize() im PHP-Handbuch beziehen:

serialisieren – Erzeugt eine speicherbare Darstellung eines Werts

serialize – Erzeugt eine speicherbare Darstellung eines Werts

unserialisieren – Erstellt einen PHP-Wert aus einer gespeicherten Darstellung

unserialize – Erstellen Sie einen PHP-Wert aus einer gespeicherten Darstellung

Offensichtlich ist die Erklärung einer „gespeicherten Darstellung“ immer noch sehr verwirrend, wenn sie in einen speicherbaren Wert übersetzt wird.

Wenn die Sprache nicht klar ausgedrückt werden kann, können wir anhand eines bestimmten PHP-Beispiels die Verwendung dieser beiden Funktionen erlernen.

<?php
//声明一个类
class dog {

  var $name;
  var $age;
  var $owner;

  function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
    $this->name = $in_name;
    $this->age = $in_age;
    $this->owner = $in_owner;
  }

  function getage() {
    return ($this->age * 365);
  }
  
  function getowner() {
    return ($this->owner);
  }
  
  function getname() {
    return ($this->name);
  }
}
//实例化这个类
$ourfirstdog = new dog("Rover",12,"Lisa and Graham");
//用serialize函数将这个实例转化为一个序列化的字符串
$dogdisc = serialize($ourfirstdog);
print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}

print &#39;<BR>&#39;;

/* 
-----------------------------------------------------------------------
  在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件 
-----------------------------------------------------------------------
*/

//我们在此注销这个类
unset($ourfirstdog);

/*  还原操作  */

/* 
-----------------------------------------------------------------------
  在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件 
-----------------------------------------------------------------------
*/


//我们在这里用 unserialize() 还原已经序列化的对象
$pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了
//获得年龄和名字属性
$old = $pet->getage();
$name = $pet->getname();
//这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态
print "Our first dog is called $name and is $old days old<br>";
print &#39;<BR>&#39;;
?>

Wir Sie können die Objekte im Beispiel auch in andere Typen wie Arrays ändern, und der Effekt ist derselbe!

Tatsächlich dient serialize() dazu, die Werte von Variablen in PHP wie Objekten (Objekten), Arrays (Arrays) usw. in Zeichenfolgen zu serialisieren und diese zu speichern Zeichenfolgen an anderen Orten wie Datenbank, Sitzung, Cookie usw., der Serialisierungsvorgang verliert den Typ und die Struktur dieser Werte nicht. Auf diese Weise können die Daten dieser Variablen zwischen PHP-Seiten und sogar verschiedenen PHP-Programmen weitergegeben werden.

Und unserialize() dient dazu, die serialisierte Zeichenfolge zurück in einen PHP-Wert zu konvertieren.

Hier ist ein weiteres Zitat aus dem PHP-Handbuch. Nach dem Lesen des obigen Beispiels sollte es leicht sein, die Bedeutung der folgenden Wörter zu verstehen.

Möchten Sie die serialisierte Zeichenfolge wieder in PHP für Werte ändern? , unserialize() kann verwendet werden. serialize() kann jeden Typ außer Ressource verarbeiten. Sie können sogar Arrays serialisieren(), die Verweise auf sich selbst enthalten. Referenzen in dem Array/Objekt, das Sie serialisieren(), werden ebenfalls gespeichert.

Beim Serialisieren eines Objekts versucht PHP, die Memberfunktion __sleep() des Objekts vor der Sequenzaktion aufzurufen. Dadurch können alle Bereinigungsvorgänge durchgeführt werden, bevor das Objekt serialisiert wird. Wenn wir unserialize() zum Wiederherstellen eines Objekts verwenden, wird die __wakeup()-Mitgliedsfunktion

auf eine einzelne serialisierte Variable aufgerufen und diese zurück in einen PHP-Wert konvertiert. Zurückgegeben wird der konvertierte Wert, der eine Ganzzahl, eine Gleitkommazahl, eine Zeichenfolge, ein Array oder ein Objekt sein kann. Gibt FALSE zurück, wenn die übergebene Zeichenfolge nicht deserialisierbar ist.

Verwandte Empfehlungen:

Detaillierte Erläuterung der Funktionsbeispiele serialize() und unserialize() in PHP

Detaillierte Erläuterung des Formulars Formatierungs-Plug-in jquery.serializeJSON

Ajax serialize()-Formular zum Hochladen von Dateien per Serialisierung

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen PHP Serialize() und Unserialize(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn