从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, ))
可见,输出结果是对象的属性。
登录后可发表评论