Le contenu de sérialisation et de désérialisation orienté objet PHP est très important en PHP. Cet article explique le contenu du code associé.
Sérialisation : processus de conversion des informations d'état d'un objet en une forme pouvant être stockée ou transmise.
Attention : Les mécanismes de sérialisation utilisés par les différents langages sont souvent différents et incompatibles.
1 Serialize serialize()
string serialize ( mixed $value )
serialize() renvoie une chaîne qui contient un flux d'octets représentant la valeur sans perdre son type et sa structure.
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.
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é.
2 Deserialize unserialize()
mixed unserialize ( string $str )
Si vous souhaitez redéfinir la chaîne sérialisée en valeur PHP, vous pouvez utiliser unserialize () .
Lorsqu'un objet est restauré à l'aide d'unserialize(), la fonction membre __wakeup() sera appelée.
Si vous souhaitez désérialiser un objet dans un autre fichier, vous devez définir la classe de l'objet avant de désérialiser.
// Lorsque la classe de l'objet n'est pas définie, s'il est désérialisé, l'objet __PHP_Incomplete_Class suivant sera obtenu, sans méthodes.
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Person [name:Person:private] => jack [age:Person:private] => 18 [sex:Person:private] => M ) <!--?php class Person { private $name; private $age; private $sex; function __construct($name, $age, $sex) { $this--->name = $name; $this->age = $age; $this->sex = $sex; } function __sleep() { $arr = array('name', 'age'); return $arr; } function __wakeup() { $this->sex = 'F'; $this->age = 20; } function say() { echo 'My name is: ' . $this->name . ',My age is: ' . $this->age . ',My sex is: ' . $this->sex . PHP_EOL; } } $p = new Person('jack', 18, 'M'); $p->say(); // My name is: jack,My age is: 18,My sex is: M $s = serialize($p); //得到(O:6:"Person":3:{s:12:"Personname";s:4:"jack";s:11:"Personage";i:18;s:11:"Personsex";s:1:"M";})字符串,有特殊字符 echo $s . PHP_EOL; $o = unserialize($s); // 反序列化之前必须要定义这个对象的类 $o->say(); // My name is: jack,My age is: 20,My sex is: F
Cet article explique en détail le contenu des codes liés à la sérialisation et à la désérialisation orientés objet HP Pour plus de connaissances connexes, veuillez prêter attention au site Web chinois PHP.
Recommandations associées :
Comment déterminer s'il s'agit d'une connexion mobile via la méthode PHP (code)
Comment obtenir une classification de niveau infini grâce aux boucles et à la récursion PHP
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!