Как создать класс c приватным конструктором

«Как создать класс c приватным конструктором» — вопрос из категории ООП, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Создать класс с приватным конструктором можно, объявив конструктор с модификатором private. Это предотвратит создание экземпляра класса напрямую через new, но позволит создавать объекты внутри самого класса (например, через статический метод).

Пример:

class Singleton {
    private static $instance;

    private function __construct() {
        // приватный конструктор
    }

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

// Использование
$singleton = Singleton::getInstance();

Ключевые моменты:

  1. Конструктор объявлен как private
  2. Для создания объекта используется статический метод
  3. Часто используется в паттерне Singleton
  4. Можно добавить final private function __clone() и final private function __wakeup() для защиты от клонирования и десериализации