旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

PHP中__sleep()要领详解【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:74


导读:__sleep(),实行serialize()时,先会挪用这个函数serialize()函数会搜检类中是不是存在一个把戏要领__sleep()。假如存在,则该要领会优...
__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()要领详解的细致内容,更多请关注ki4网别的相干文章!

标签:sleep()