标签:对象 protected 准备 使用 methods clone nec 好用 iss
__construct(),__desturct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__toString(),__invoke(),__set_state(),__clone(),和,__debuginfo() 等方法在 PHP 中被称为"魔术方法"(Magic methods)。在命名自己的类方法时不能使用这些方法名.
注意:__sleep()不能返回父类的私有成员的名字。这样做会产生一个 E_NOTICE
级别的错误。可以用 Serializable 接口来替代。
__sleep()方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。
与之相反,unserlalize()会检查是否存在一个 __wakeup()方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。
__wakeup()经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
例子:Sleep 和 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();
}
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();
}
}
?>
标签:对象 protected 准备 使用 methods clone nec 好用 iss
原文地址:http://www.cnblogs.com/linlin-php/p/7280160.html