PHP 5.10创建对象新方法……

时间:2022-10-17 14:27:12
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最快