Недавно мы обсудили, удалось ли построить trait Singleton
PHP Traits, и мы сыграли вокруг с ним возможная реализация, но столкнулись с проблемами со строительством.
Это академическое упражнение. Я знаю, что Singletons have very little - if not to say no - use in PHP
и что one should 'just create one'
, но только для изучения возможностей черт:
<?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
Возникает вопрос: можно ли создать черту Singleton в PHP?