使用 PHP 5.4 构建单例特性
我们最近讨论了是否可以构建PHP Traits,我们尝试了一种可能的实现,但在构建一个PHP Traits时遇到了问题。trait Singleton
这是一项学术练习。我知道单例在PHP中很少使用(如果不是说不
),并且应该“只创建一个”
,而只是为了探索特征的可能性:
<?php
trait Singleton
{
protected static $instance;
final public static function getInstance()
{
return isset(static::$instance)
? static::$instance
: static::$instance = new static;
}
final private function __construct() {
static::init();
}
protected function init() {}
final private function __wakeup() {}
final private function __clone() {}
}
class A {
use Singleton;
public function __construct() {
echo "Doesn't work out!";
}
}
$a = new A(); // Works fine
重现: http://codepad.viper-7.com/NmP0nZ
问题是:有可能在PHP中创建单例特征吗?