您的位置:首页 > 编程语言 > PHP开发

PHP魔术方法 __sleep和__wakeup()

2016-10-25 20:19 330 查看
更多精彩内容请访问PHP图库

serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。__sleep() 不能返回父类的私有成员的名字。这样做会产生一个 E_NOTICE 级别的错误。可以用 Serializable 接口来替代。 __sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。

<?php

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();
}

public 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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php
相关文章推荐