Почему люди используют синглтоны в своей структуре PHP

Хорошо, ребята, я изо всех сил пытаюсь понять, зачем нужен синглтон.

Давайте рассмотрим реальный пример: у меня есть структура для моя CMS
Мне нужен класс, который регистрирует некоторую информацию (давайте придерживаться PHP).

Пример:

class Logger{
   private $logs = array();

   public function add($log) {
      $this->logs[]=$log;
   }      
}

Теперь, конечно, этот вспомогательный объект должен быть уникальным для времени записи запроса страницы моего CMS.
И чтобы решить эту проблему, мы должны сделать его синглтоном (объявив конструктор закрытым и т.д.)

Но почему, черт возьми, такой класс не является полностью статичным? Это решит потребность в шаблоне singleton (который считается плохой практикой). Пример:

class Logger {
    private static $logs = array();

    public static function add($log) {
        self::$logs[]=$log;
    }
}

Сделав этот помощник полностью статическим, когда нам нужно добавить журнал где-нибудь в нашем приложении, нам просто нужно вызвать его статически, например: Logger :: add ('log 1'); против одноэлементного вызова, например: Logger :: getInstance () -> add ('log 1');

Надеюсь, кто-то упростит понимание для мне, почему использует синглтон вместо статического класса в PHP.

Править

Это довольно хорошая лекция о синглтоне и статическом классе для тех, кому интересно, спасибо @James. (Обратите внимание, что это не t ответьте на мой вопрос)

11
задан dynamic 18 January 2016 в 09:27
поделиться