PHP魔术方法__sleep()

2018-09-17 11:00 By "Powerless" 3149 0 0

__sleep()方法通常用来在保存数据之前指定哪些属性需要被序列化。如果对象中包含一些完全不需要序列化的巨大对象,__sleep()就能派上用场了。

示例代码如下:

<?php
class Person
{
    public $sex;
    public $name;
    public $age;
    public function __construct($name="",  $age=25, $sex='Male')
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
    /**
     * @return array
     */
    public function __sleep() {
        echo "It is called when the serialize() method is called outside the class.<br>";
        $this->name = base64_encode($this->name);
        return array('name', 'age'); // 返回值中的元素必须是属性的名称
    }
}
$person = new Person('John'); // Initially assigned.
echo serialize($person);
echo '<br/>';

输出结果如下:

It is called when the serialize() method is called outside the class.
O:6:"Person":2:{s:4:"name";s:8:"5bCP5piO";s:3:"age";i:25;}


评 论

View in WeChat

Others Discussion

  • HTTP头中隐藏PHP版本号
    Posted on 2021-01-11 16:38
  • Composer 异常 [ErrorException]
    Posted on 2019-11-25 17:55
  • TCP协议的特性
    Posted on 2019-04-26 16:46
  • 能创建多少个 TCP 连接?
    Posted on 2021-08-02 16:00
  • PHP练习-移动数组内的0到最后并保持其他元素顺序不变
    Posted on 2020-08-14 20:32
  • Mysql联合索引的最左前缀匹配原则
    Posted on 2018-08-25 15:00
  • PHP没你想的那么差
    Posted on 2021-12-17 15:40
  • 快速了解Kafka
    Posted on 2021-03-25 14:20