Просто вопрос о стандартах.PHP: Стандарты конструкторов классов, предотвращающие создание экземпляров
Я создал класс оболочки для управления сеансом PHP, который помогает автоматически организовывать данные сеанса на основе определенных внутренних модулей, доступных для него. Он разработан как одноэлементный, используя метод getInstance()
для создания экземпляра, поскольку в данный момент будет только один сеанс. Кроме того, это стало для меня преимуществом, так как я могу предотвратить создание экземпляра объекта сеанса в (хотя возможно ограниченном) шансе, что session_start()
терпит неудачу. Например, для примера:
public static function getInstance(){
if(!self::$_instance || !session_id()){
if(session_start()){
self::$_instance = new self(session_id());
}else{
return;
}
}
return self::$_instance;
}
Мой вопрос: хотя использование метода шлюза getInstance()
работает естественным образом здесь по нескольким причинам, является ли общепринятой практикой реализовать общедоступные статические методы getInstance()
или create()
в классах для управления созданием объекта, если объект зависит от внешних условий?
Я просто обнаружил, что придерживаюсь соглашения о предоставлении getInstance()
в случае одиночных игр и create()
в случае нескольких объектов экземпляра.
TL; Я продолжаю использовать методы getInstance()
и create()
для управления всеми объектами. Я делаю это неправильно?
EDIT: Доработка мой вопрос немного; Помимо использования getInstance()
для синглтонов, мой конструктор обертывает create()
методами, служащими менее целенаправленно и более склонными к плохому соглашению? Должен ли я бросать Исключения из истинного конструктора или продолжать возвращать false из create()
?
Одиночный шаблон не плох, это точно. Чрезмерное это плохо (как злоупотребление чем-то плохо). :) – egis 2010-11-30 06:25:18
Все в меру, я полагаю :) – 2010-11-30 06:28:37
Thanks ** El Yobo **; Я посмотрю ваше предложение :) – Dan 2010-11-30 06:50:57