我是靠谱客的博主 纯情信封,最近开发中收集的这篇文章主要介绍php不能序列化吗,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑

所谓序列化,就是将一个在内存中的变量转换为可保存或传输的字符串的过程。而反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来可以轻松的完成数据的存储和传输操作,使得程序更具维护性。

php也能实现序列化。

在php中,可以利用serialize() 函数实现序列化,将值转换为一个可以存储的字符串;还可使用unserialize() 函数能够重新把字符串变回 PHP 原来的值,也就是反序列化。

serialize() 函数的语法格式如下:

serialize(mixed $value)
登录后复制

其中 $value 就是要序列化的变量。

serialize() 函数可以处理除了 resource(资源)之外的任何类型。当序列化对象时,PHP 会在序列动作之前调用该对象的 __sleep() 成员函数。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 反序列化对象时,将调用 __wakeup() 成员函数。

【示例】使用 serialize() 函数序列化一个对象。

<?php
header('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.uoften.com/');
$ser_str = serialize($websit);
echo $ser_str;
?>
登录后复制

1.png

扩展知识:反序列化

当使用 serialize() 函数将对象序列化后,可以将这个得到的字符串保存到文件或者数据库中,然后在需要的地方使用 unserialize() 函数将这个字符串反序列化,unserialize() 函数的语法格式如下:

unserialize(string $str)
登录后复制

其中,$str 为使用 serialize() 函数序列化后的字符串。如果传入的字符串不可被反序列化,则会返回 FALSE,并产生一个 E_NOTICE。

【示例】反序列化上面得到的字符串。

<?php
header('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.uoften.com/";}';
$websit = unserialize($str);
var_dump($websit);
?>
登录后复制

2.png

推荐学习:《PHP视频教程》

以上就是php不能序列化吗的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是纯情信封为你收集整理的php不能序列化吗的全部内容,希望文章能够帮你解决php不能序列化吗所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部