• 技术文章 >后端开发 >php教程

    PHP中__sleep()方法详解

    藏色散人藏色散人2020-08-05 11:37:36原创6424
    __sleep(),执行serialize()时,先会调用这个函数

    serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,则该方法会优先被调用,然后才执行序列化操作。

    此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。

    如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

    注意:

    __sleep() 不能返回父类的私有成员的名字。这样做会产生一个 E_NOTICE 级别的错误。可以用 Serializable 接口来替代。

    作用:

    __sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。

    具体请参考如下代码:

    <?php
    class Person
    {
        public $sex;
        public $name;
        public $age;
        public function __construct($name="",  $age=25, $sex='男')
        {
            $this->name = $name;
            $this->age  = $age;
            $this->sex  = $sex;
        }
        /**
         * @return array
         */
        public function __sleep() {
            echo "当在类外部使用serialize()时会调用这里的__sleep()方法<br>";
            $this->name = base64_encode($this->name);
            return array('name', 'age'); // 这里必须返回一个数值,里边的元素表示返回的属性名称
        }
    }
    $person = new Person('小明'); // 初始赋值
    echo serialize($person);
    echo '<br/>';

    代码运行结果:

    当在类外部使用serialize()时会调用这里的__sleep()方法
    O:6:"Person":2:{s:4:"name";s:8:"5bCP5piO";s:3:"age";i:25;}

    以上就是PHP中__sleep()方法详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:sleep()
    上一篇:PHP中__unset()方法详解 下一篇:PHP中 __wakeup()方法详解
    千万级数据并发解决方案

    相关文章推荐

    • PHP中__set()方法详解• PHP中__isset()方法详解• PHP中__unset()方法详解
    1/1

    PHP中文网