从PHP 5.1.0开始,__set_state()方法会在调用var_export()导出类代码时自动被调用
__set_state()方法的参数是个数组,包含所有属性的值,格式为array('property' => value, ...)。
示例代码如下:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='Male') { $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('John'); // 赋初始值 $person->name = 'Jams'; var_export($person);
输出结果如下:
Person::__set_state(array( 'sex' => 'Male', 'name' => 'Jams', 'age' => 25, ))
如果类中没有定义__set_state()会怎样?我们来试试看。
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='Male') { $this->name = $name; $this->age = $age; $this->sex = $sex; } } $person = new Person('John'); // 赋初始值 var_export($person);
输出结果如下:
Person::__set_state(array( 'sex' => 'Male', 'name' => 'John', 'age' => 25, ))
可见,输出结果是对象的属性。
登录后可发表评论