Глоссарий

Singleton

Singleton — паттерн проектирования, гарантирующий существование единственного экземпляра класса и предоставляющий глобальную точку доступа к нему. Классическое применение: класс конфигурации, логер, соединение с БД.

Реализация

class Config {
  private static ?self $instance = null;
  private function __construct() {}

  public static function getInstance(): self {
    self::$instance ??= new self();
    return self::$instance;
  }
}

Критика

Singleton — один из наиболее критикуемых паттернов. Он вводит глобальное состояние, усложняет тестирование (трудно заменить на mock), нарушает Dependency Inversion. В современном коде заменяется регистрацией зависимости как singleton в IoC-контейнере.