__set_state(),调用var_export()导出类时,此静态方法会被调用。
作用:
自 PHP 5.1.0 起,当调用 var_export() 导出类时,此静态方法会被自动调用。
参数:
本方法的唯一参数是一个数组,其中包含按 array('property' =youjiankuohao
php
cn value, ...) 格式排列的类属性。
立即学习
“
PHP免费学习笔记(深入)
”;
下面我们先来看看在没有加 __set_state() 情况按下,代码及运行结果如何:
上代码:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
看结果:
很明显,将对象中的属性都打印出来了
加了 __set_state() 之后:
继续上代码:
继续看结果:
name = $name;
$this->age = $age;
$this->sex = $sex;
}
}
$person = new Person('小明'); // 初始赋值
var_export($person);Person::__set_state(array( 'sex' => '男', 'name' => '小明', 'age' => 25, ))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, ))