• 技术文章 >后端开发 >PHP问题

    php不能序列化吗

    青灯夜游青灯夜游2022-04-26 17:13:25原创245

    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() 函数序列化一个对象。

    <?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('php中文网', 'https://www.php.cn/');
    $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:"php中文网";s:3:"url";s:19:"https://www.php.cn/";}';
    $websit = unserialize($str);
    var_dump($websit);
    ?>

    2.png

    推荐学习:《PHP视频教程

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php
    上一篇:php怎么判断字符串中有某几个字符 下一篇:php怎么替换数组中的一个值
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• thinkphp5中session的用法是什么• php在windows和linux中有什么区别吗• 一文深入了解 PHP 8 中的 JIT• php怎么计算还剩几天• php怎么去掉字符串里的符号• php怎么关闭目录
    1/1

    PHP中文网