今天小编给大家分享一下php能不能序列化的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
php能实现序列化。在php中,可以利用serialize()函数实现序列化,将值转换为一个可以存储的字符串,语法“serialize(要序列化的变量)”;还可使用unserialize()函数实现反序列化,重新把字符串变回PHP原来的值。
本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑
所谓序列化,就是将一个在内存中的变量转换为可保存或传输的字符串的过程。而反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来可以轻松的完成数据的存储和传输操作,使得程序更具维护性。
php也能实现序列化。
在php中,可以利用serialize() 函数实现序列化,将值转换为一个可以存储的字符串;还可使用unserialize() 函数能够重新把字符串变回 PHP 原来的值,也就是反序列化。
serialize() 函数的语法格式如下:
serialize(mixed $value)
其中 $value 就是要序列化的变量。
serialize() 函数可以处理除了 resource(资源)之外的任何类型。当序列化对象时,PHP 会在序列动作之前调用该对象的 __sleep() 成员函数。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 反序列化对象时,将调用 __wakeup() 成员函数。
【示例】使用 serialize() 函数序列化一个对象。
<?phpheader('content-type:text/html;charset=utf-8'); class WebSit{ public $name; public $url; function __construct($name, $url){ $this->name = $name; $this->url = $url; }}$websit = new WebSit('编程网', 'https://www.yisu.com/');$ser_str = serialize($websit);echo $ser_str;?>
扩展知识:反序列化
当使用 serialize() 函数将对象序列化后,可以将这个得到的字符串保存到文件或者数据库中,然后在需要的地方使用 unserialize() 函数将这个字符串反序列化,unserialize() 函数的语法格式如下:
unserialize(string $str)
其中,$str 为使用 serialize() 函数序列化后的字符串。如果传入的字符串不可被反序列化,则会返回 FALSE,并产生一个 E_NOTICE。
【示例】反序列化上面得到的字符串。
<?phpheader('content-type:text/html;charset=utf-8'); class WebSit{ public $name; public $url; function __construct($name, $url){ $this->name = $name; $this->url = $url; }}$str = 'O:6:"WebSit":2:{s:4:"name";s:12:"编程网";s:3:"url";s:19:"https://www.yisu.com/";}';$websit = unserialize($str);var_dump($websit);?>
以上就是“php能不能序列化”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。