В соответствии с руководство по PHP, класс вроде этого:
abstract class Example {}
не может быть создан. Если мне нужен класс без экземпляра, например. для шаблона реестра:
class Registry {}
// and later:
echo Registry::$someValue;
было бы признано хорошим стилем просто объявить класс абстрактным? Если нет, то каковы преимущества скрытия конструктора в качестве защищенного метода по сравнению с абстрактным классом?
Обоснование для запроса: насколько я понимаю, это может привести к некоторому злоупотреблению функциями, поскольку руководство относится к абстрактным классам как к чертежам для более поздних классов с возможностью создания экземпляров.
Обновление: Прежде всего, спасибо за все ответы! Но многие ответы звучат совершенно одинаково: "Вы не можете создать экземпляр абстрактного класса, но для реестра, почему бы не использовать одноэлементный шаблон?"
К сожалению, это было более или менее точно повторение моего вопроса. В чем преимущество использования одноэлементного шаблона (a.k.a. hiding __construct()
) по сравнению с просто объявлением его abstract
и не нужно беспокоиться об этом? (Как, например, это сильная коннотация между разработчиками, что классы abstract
фактически не используются или так).