Ответ
Создать класс с приватным конструктором можно, объявив конструктор с модификатором 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();
Ключевые моменты:
- Конструктор объявлен как
private - Для создания объекта используется статический метод
- Часто используется в паттерне Singleton
- Можно добавить
final private function __clone()иfinal private function __wakeup()для защиты от клонирования и десериализации