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最快