Home  >  Article  >  Backend Development  >  Detailed introduction to object PHP serialization_PHP tutorial

Detailed introduction to object PHP serialization_PHP tutorial

WBOY
WBOYOriginal
2016-07-15 13:28:05834browse

We all know that PHP serialization can convert variables, including objects, into continuous bytes data. You can store the serialized variables in a file or transmit them over the network, and then deserialize them. Restore to original data. This article gives you a detailed introduction to PHP serialization. PHP can successfully store the properties and methods of a class that you define before deserializing its object. Sometimes you may need an object to be executed immediately after deserializing it. For such purposes, PHP automatically looks for the __sleep and __wakeup methods.

When an object is serialized by PHP, PHP will call the __sleep method (if it exists). After deserializing an object, PHP will Call the __wakeup method. Neither method accepts parameters. The __sleep method must return an array containing the properties that need to be serialized. PHP will discard the values ​​of other properties. Without the __sleep method, PHP will save all attributes. Example 1 shows how to use the __sleep and __wakeup methods to serialize an object. The Id attribute is a temporary attribute that is not intended to be retained in the object. The __sleep method guarantees that the id attribute is not included in the serialized object. When reversed To serialize a User object, the __wakeup method establishes a new value for the id attribute. This example is designed to be self-sustaining. In actual development, you may find that objects containing resources (such as images or data streams) require these methods.
<ol class="dp-xml">
<li class="alt"><span><span>Listing1 Object serialization  </span></span></li>
<li class=""><span>class User  </span></li>
<li class="alt"><span>{  </span></li>
<li class=""><span>public $name;  </span></li>
<li class="alt"><span>public $id;  </span></li>
<li class=""><span>function __construct()  </span></li>
<li class="alt"><span>{  </span></li>
<li class=""><span>//give user a unique ID 赋予一个不同的ID  </span></li>
<li class="alt">
<span>$this-></span><span class="attribute"><font color="#ff0000">id</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">uniqid</font></span><span>();  </span>
</li>
<li class=""><span>}  </span></li>
<li class="alt"><span>function __sleep()  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>//do not serialize this->id 不串行化id  </span></li>
<li class=""><span>return(array("name"));  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>function __wakeup()  </span></li>
<li class="alt"><span>{  </span></li>
<li class=""><span>//give user a unique ID  </span></li>
<li class="alt">
<span>$this-></span><span class="attribute"><font color="#ff0000">id</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">uniqid</font></span><span>();  </span>
</li>
<li class=""><span>}  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>//create object 建立一个对象  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">u</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> User;  </span>
</li>
<li class="">
<span>$u-></span><span class="attribute"><font color="#ff0000">name</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">"Leon"</font></span><span>;  </span>
</li>
<li class="alt"><span>//serialize it 串行化 注意不串行化id属性,id的值被抛弃  </span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">s</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">serialize</font></span><span>($u);  </span>
</li>
<li class="alt"><span>//unserialize it 反串行化 id被重新赋值  </span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">u2</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">unserialize</font></span><span>($s);  </span>
</li>
<li class="alt"><span>//$u and $u2 have different IDs $u和$u2有不同的ID  </span></li>
<li class=""><span>print_r($u);  </span></li>
<li class="alt"><span>print_r($u2);  </span></li>
<li class=""><span>?>  </span></li>
</ol>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446474.htmlTechArticleWe all know that PHP serialization can convert variables, including objects, into continuous bytes data. You can convert strings The delineated variables are stored in a file or transmitted over the network, and then reflected...
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