自 PHP 5.1.0 起当调用 var_export() 导出类时,此静态 方法会被调用。本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。
在php中内置了一些特书的方法,这些特殊方法被称之为魔术方法,其也有特殊的命名规则,以“__”双下划线开头的方法和函数名,所以我们自定义的函数不应该用双下划下开头,目的是为了区分魔术方法。
__construct(), __autoload(),__destruct(), __call(), __callStatic(), __get()
, __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。
支持版本:
(php5.1.0 起当调用)
__set_state()定义以及用法:
自 PHP 5.1.0 起当调用 var_export() 导出类时,此静态 方法会被调用。
本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。
__set_state()语法:
static __set_state ( array $properties ) : object
参数解释:
参数 | 描述 |
---|---|
array $properties | 本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。 |
返回值:
object
php __set_state()演示示例
<?php
class A
{
public $var1;
public $var2;
public static function __set_state($an_array) // As of PHP 5.1.0
{
$obj = new A;
$obj->var1 = $an_array['var1'];
$obj->var2 = $an_array['var2'];
return $obj;
}
}
$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';
eval('$b = ' . var_export($a, true) . ';');
var_dump($b);
?>
以上示例会输出
$b = A::__set_state(array(
'var1' => 5,
'var2' => 'foo',
));
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论