Home  >  Article  >  Backend Development  >  Explain the relevant code of PHP object-oriented serialization and deserialization

Explain the relevant code of PHP object-oriented serialization and deserialization

jacklove
jackloveOriginal
2018-06-08 14:09:351350browse

PHP object-oriented serialization and deserialization content is very important in PHP. This article explains its related code content.

Serialization: The process of converting the state information of an object into a form that can be stored or transmitted.

Warning: The serialization mechanisms used in various languages ​​are often different and incompatible.

1 Serialize serialize()

string serialize ( mixed $value )

serialize() Returns a string that contains a byte stream representing value without losing its type and structure.

serialize() can handle any type except resource. You can even serialize() arrays that contain references to themselves.

When serializing an object, PHP will attempt to call the object's member function __sleep() before the sequence action. This allows any cleanup operations to be done before the object is serialized.

2 Deserialization unserialize()

mixed unserialize ( string $str )

If you want to change the serialized string back to the value of PHP, you can use unserialize ().

When using unserialize() to restore an object, the __wakeup() member function will be called.

If you want to deserialize an object in another file, you must define the class of the object before deserializing.

// When the class of the object is not defined, if deserialized, the following __PHP_Incomplete_Class object will be obtained, without methods.

__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(&#39;name&#39;, &#39;age&#39;);
        return $arr;
    }
    function __wakeup() {
        $this->sex = &#39;F&#39;;
        $this->age = 20;
    }
    function say() {
        echo &#39;My name is: &#39; . $this->name . &#39;,My age is: &#39; . $this->age . &#39;,My sex is: &#39; . $this->sex . PHP_EOL;
    }
}
$p = new Person(&#39;jack&#39;, 18, &#39;M&#39;);
$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

This article explains in detail the content of HP object-oriented serialization and deserialization related codes. For more related knowledge, please pay attention to the PHP Chinese website.

Related recommendations:

How to determine whether it is a mobile login through PHP method (code)

How to achieve infinite classification through php loops and recursion

Use the magic method __CLASS__ in PHP to obtain related operations of the class name

The above is the detailed content of Explain the relevant code of PHP object-oriented serialization and deserialization. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn