Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как запретить создавать объект от класса напрямую? PHP

Евгения Ученик (55), закрыт 1 год назад
Всем привет!
Имеется класс со статическим методом-фермой, который создаёт экземпляр того или иного класса после проверки данных на входе (дабы исключить ошибки в том числе).
Как сделать так, чтобы объекты классов могли создаваться только через этот метод?
Это нужно для того, чтобы ребята не обходили ограничения, заложенные в методе-ферме.
У меня вариант пока только один - метод-ферму сделать суперклассом, а все конструкторы наследников - protected.
Может есть более человечный способ? Кто в курсе?
Лучший ответ
Андрей Высший разум (483074) 7 лет назад
Объяви конструктор приватным - статический метод будет иметь к нему доступ и сможет создавать объекты класса, а код вне класса - нет.

И, разумеется, в фабричном методе надо использовать не self, а static.
Остальные ответы
AlexBrin Мыслитель (5055) 7 лет назад
Можно сделать класс абстрактным, тогда его нельзя будет вызвать. Можно только унаследовать:
abstract class ClassName {}
А от этого уже можно плясать как угодно

Так же можно сделать создание объекта статическим методом:
public static function methodName() {}
Похожие вопросы