所以,我一直像这样实现单例:
class Singleton {
private static $_instance = null;
public static function getInstance() {
if (self::$_instance === null) self::$_instance = new Singleton();
return self::$_instance;
}
private function __construct() { }
}
然而,我最近想到我也可以用成员级别的静态变量来实现它:
class Singleton {
public static function getInstance() {
//oops - can't assign expression here!
static $instance = null; // = new Singleton();
if ($instance === null) $instance = new Singleton();
return $instance;
}
private function __construct() { }
}
对我来说,这个实现更清晰,因为它不会弄乱类
i()->DB()
。 - Alix AxelgetInstance
函数不是静态的,它怎么能与单例相关呢? - Austin Hyde