概述
上回说了,在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魔术方法(三)类的序列化和反序列化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复