Maison >développement back-end >tutoriel php >La différence entre php serialize() et unserialize()
Cet article présente principalement quelques différences entre php Serialize() et unserialize(). Les amis dans le besoin peuvent se référer à
L'explication de Serialize() et unserialize() dans le manuel php est :
.serialize — Génère une représentation stockable d'une valeur
serialize
— Génère une représentation stockable d'une valeur
unserialize — Crée une valeur PHP à partir d'une représentation stockée
unserialize
— Créer une valeur PHP à partir d'une représentation stockée
Évidemment, l'explication de « une représentation stockée » est encore très déroutante lorsqu'elle est traduite en une valeur stockable.
Si le langage ne peut pas être exprimé clairement, alors nous pouvons utiliser un exemple PHP spécifique pour apprendre l'utilisation de ces deux fonctions
<?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 '<BR>'; /* ----------------------------------------------------------------------- 在这里你可以将字符串 $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 '<BR>'; ?>
Nous pouvons également changer les objets de l'exemple en d'autres types tels que des tableaux, et l'effet sera le même !
En fait, serialize() consiste à sérialiser les valeursde variables en PHP telles que des objets (objects), des tableaux (array), etc. dans des chaînes et à les stocker. chaînes à d'autres endroits Tels que la base de données, la session, le cookie, etc., l'opération de sérialisation ne perdra pas le type et la structure de ces valeurs. De cette façon, les données de ces variables peuvent être transmises entre les pages PHP et même entre différents programmes PHP.
Et unserialize() consiste à reconvertir la chaîne sérialisée en une valeur PHP.
Voici une autre citation du manuel PHP Après avoir lu l'exemple ci-dessus, il devrait être facile de comprendre la signification des mots suivants
Vous souhaitez redéfinir la chaîne sérialisée en PHP Pour les valeurs. , unserialize() peut être utilisé. Serialize() peut gérer n'importe quel type sauf la ressource. Vous pouvez même sérialiser() des tableaux contenant des références à eux-mêmes. Les références dans le tableau/objet que vous sérialisez() seront également stockées.
Lors de la sérialisation d'un objet, PHP tentera d'appeler la fonction membre de l'objet __sleep() avant l'action de séquence. Cela permet d'effectuer toutes les opérations de nettoyage avant que l'objet ne soit sérialisé. De même, lors de l'utilisation de unserialize() pour restaurer un objet, la fonction membre __wakeup()
sera appelée unserialize() qui opère sur une seule variable sérialisée et la reconvertit en une valeur PHP. Ce qui est renvoyé est la valeur convertie, qui peut être un entier, un flottant, une chaîne, un tableau ou un objet. Renvoie FALSE si la chaîne passée n'est pas désérialisable.
Recommandations associées :
Explication détaillée des exemples de fonctions serialize() et unserialize() en php
Explication détaillée du formulaire plug-in de formatage jquery.serializeJSON
Formulaire Ajax Serialize() pour télécharger des fichiers via la sérialisation
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!