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

    PHP中 __set_state()方法详解

    藏色散人藏色散人2019-07-25 14:22:44原创2376
    __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中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:PHP
    上一篇:PHP中__invoke()方法详解 下一篇:PHP中__clone()方法详解
    大前端线上培训班

    相关文章推荐

    • PHP中__sleep()方法详解• PHP中 __wakeup()方法详解• PHP中 __toString()方法详解• PHP中__invoke()方法详解

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网