码迷,mamicode.com
首页 > Web开发 > 详细

PHP 魔术方法

时间:2017-08-03 16:55:21      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:对象   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();
    }
}
?>

 

 

 

PHP 魔术方法

标签:对象   protected   准备   使用   methods   clone   nec   好用   iss   

原文地址:http://www.cnblogs.com/linlin-php/p/7280160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!