PHP中 __set_state()方法详解-php教程

资源魔 9 0
__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()办法详解的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!