Maison >développement back-end >tutoriel php >La différence entre php serialize() et unserialize()

La différence entre php serialize() et unserialize()

墨辰丷
墨辰丷original
2018-05-17 14:01:412427parcourir

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 &#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;;
?>

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 valeurs​​de 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn