Глосарій

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. У сучасному коді замінюється реєстрацією через IoC-контейнер як singleton-залежність.