class C{
public $a = 'a';
protected $b = 'b';
public function a(){
echo $this->b;
}
static public function __set_state($vars){
$t = new C;
$t->a = $vars['b'];
$t->b = $vars['a'];
return $t;
}
}
$d = C::__set_state(array(
'a' => 'a+',
'c' => 'c',
));
var_dump($d);
可以获得如下输入:
object(C)#4 (2) {
["a"]=>
NULL
["b:protected"]=>
string(2) "a+"
}
这个__set_state本来是做可读的serialize(var_export)使的magic method的~不过也的确可以这样bt的集中赋值,甚至给私有变量赋值……
其他的不说了~很bt
琢磨琢磨有什么用处没……
http://docs.php.net/var_export 这里第一条回复,有人比较了 serialize / include / eval 三种方法载入15~100条索引的数组的速度,证明serialize最快