Хорошо, ребята, я изо всех сил пытаюсь понять, зачем нужна синглтон.
Сделайте реальный пример: у меня есть структура для моей CMS
Мне нужен класс, который регистрирует некоторую информацию (пусть наклеивается на PHP).
Пример:
class Logger{
private $logs = array();
public function add($log) {
$this->logs[]=$log;
}
}
Теперь, конечно, этот вспомогательный объект должен быть уникальным для срока службы запроса страницы моей CMS.
И чтобы решить это, мы сделали бы его singleton (объявив private конструктором и т.д.)
Но почему, черт возьми, такой класс не слишком статичен? Это решило бы потребность в одноэлементном шаблоне (который считался плохим параметром). Пример:
class Logger {
private static $logs = array();
public static function add($log) {
self::$logs[]=$log;
}
}
Сделав этот помощник полностью статическим, когда нам нужно добавить журнал где-нибудь в нашем приложении, нам просто нужно называть его статически, как: Logger::add('log 1');
vs oneton call like: Logger::getInstance()->add('log 1');
Надеюсь, что кто-то упростит для меня понимание, почему использует singleton над статическим классом в PHP.