加快建立 object 实例的小技巧?
众所周知的是,在 PHP 中,$var = new Object() 这般的操作需要花费不少时间,而在 PHP5 中,__wakeup() 的引入或许能帮我们解决这般的问题。
class foo
{
static public $WAKEUP_STR = 'O:3:"foo":0:{}';
public function foo(){}
public function bar(){}
}
include 'Benchmark/Timer.php';
$Timer = new Benchmark_Timer(true);
$foo = new foo();
$Timer->setMarker('Created commonly');
$foo = unserialize(foo::$WAKEUP_STR);
$Timer->setMarker('Created with unserialize()');
$Timer->stop();
$Timer->display();
根据 Benchmark_Timer 输出的结果,利用 unserialize() 这个方法创建 foo 的实例比使用 new 创建实例花费更少的时间。再结合 __wakeup(),或者在 unserialize() 以后使用诸如 $foo->init() 的方法进行初始化,或许是一个听起来不错的办法?
