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

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

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


导读:__set_state(),挪用var_export()导出类时,此静态要领会被挪用。作用:自PHP5.1.0起,当挪用var_export()导出类时,此...
__set_state(),挪用var_export()导出类时,此静态要领会被挪用。

作用:

自 PHP 5.1.0 起,当挪用 var_export() 导出类时,此静态要领会被自动挪用。

参数:

本要领的唯一参数是一个数组,个中包括按 array('property' => value, ...) 花样分列的类属性。

下面我们先来看看在没有加 __set_state() 状况按下,代码及运转效果怎样:

上代码:

<?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;
    }
}
$person = new Person('小明'); // 初始赋值
var_export($person);

看效果:

Person::__set_state(array( 'sex' => '男', 'name' => '小明', 'age' => 25, ))

很明显,将对象中的属性都打印出来了

加了 __set_state() 以后:

继承上代码:

<?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;
    }
    public static function __set_state($an_array)
    {
        $a = new Person();
        $a->name = $an_array['name'];
        return $a;
    }
}
$person = new Person('小明'); // 初始赋值
$person->name = '小红';
var_export($person);

继承看效果:

Person::__set_state(array( 'sex' => '男', 'name' => '小红', 'age' => 25, ))

以上就是PHP中 __set_state()要领详解的细致内容,更多请关注ki4网别的相干文章!

标签:PHP