• 魔术方法__sleep 和 __wakeup


    感觉序列化和反序列化用得倒是比较少了,而json_encode和json_decode用得相对多,都是转化成串,进行入库、传输等。json更方便,但是序列化和反序列化结合这两个魔术方法使用倒还行
    <?php /** * 魔术方法__sleep() 和 __wakeup() * __sleep(): serialize()序列化之前调用,返回一个需要保存变量名数组。一般用来保存部分属性,节省空间 * __wakeup():unserialize() 反序列化之前调用,无返回值,一般进行一个动作 */ class Test{ public $s = 'hehe'; public $a = 'world'; public function __sleep(){ return array('a');//序列化只保存a } public function __wakeup(){ $this->a = 'hello';//反序列化时进行a值的修改动作 } } $m = new Test(); $n = serialize($m); $m = unserialize($m); var_dump($m); ?>

      下面看  __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();
        }
    }
    ?>
    

      

  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业02
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    C语言I博客作业08
  • 原文地址:https://www.cnblogs.com/taijun/p/4210371.html
Copyright © 2020-2023  润新知