我是靠谱客的博主 甜美白开水,最近开发中收集的这篇文章主要介绍php魔术方法(三)类的序列化和反序列化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

上回说了,在PHP中,对于不存在方法和属性的操作。下面介绍另外一个特性。在魔术方法中,有个__sleep() 和 __weekup()。
__sleep()  当我们对类进行序列化操作的时候,serialize()函数会检查类中有没有__sleep()这个魔术方法,如果存在,则会优先调用这个方法。这时候,我们可以当前对象中想被序列化的变量名称组成的数组,利用这个方法返回。
__wakeup() 与__sleep相反,在unserialize()的时候,就会先查看这个方法是否存在。
需要注意的是,sleep的时候,不能返回父类中私有成员的名称。
让我们看一个例子:
class Connection 
{
    protected $link;
    private $server, $username, $password, $db;

    public function __construct($server, $username, $password, $db)
    {
        $this->server = $server;
        $this->username = $username;
        $this->password = $password;
        $this->db = $db;
        $this->connect();
    }

    private function connect()
    {
        $this->link = mysql_connect($this->server, $this->username, $this->password);
        mysql_select_db($this->db, $this->link);
    }

    public function __sleep()
    {
        return array('server', 'username', 'password', 'db');
    }

    public function __wakeup()
    {
        $this->connect();
    }
}
现在当我们序列化这个类的时候,我们连接数据库的信息就会被保存起来,而当我们反序列化的时候,数据库通过wakeup连接成功。

最后

以上就是甜美白开水为你收集整理的php魔术方法(三)类的序列化和反序列化的全部内容,希望文章能够帮你解决php魔术方法(三)类的序列化和反序列化所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部