![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Kotakota |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 14.12.2010 Репутация: нет Всего: нет |
Привет!
Какой шаблон лучше применить для реализации фронт-контроллера в MVC. Есть два на примете: Синглтон и абстрактный класс! По ходу дела есть вопрос. С синглтоном понятно! А если применить абстрактный класс, то будет создаваться один экземпляр класса?
В этом случае будет создан один экземпляр класса Controller_Base? Или для каждого класса потомка свой экземпляр Controller_Base? Это сообщение отредактировал(а) Kotakota - 25.4.2011, 13:36 |
||||||
|
|||||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Не понимаю как ты хочешь Singleton здесь использовать.
baseController должен быть абстрактным... |
|||
|
||||
| Kotakota |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 14.12.2010 Репутация: нет Всего: нет |
Вот так:
А при использовании абстрактных классов создается только один экземпляр класса? |
||||||
|
|||||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Kotakota, Все же не могу понять что вы тут пытайтесь сделать, такое впечатление что не до конца понятно что такое MVC
Singleton использовать не следует, это не верно, если вы собрались плодить Controller'ы( что не входит в классический MVC да и вообще не MVC Будет), то у каждого Controller'a должен быть свой state ------ Суть в абстрактных классах в том что мы хотим использовать наследие, что бы не писать каждый раз код, и пытаемся вынести функционал который повторяется между нашими классами как можно выше по иерархии... Пэтому пишется baseController с базовым функционалом, и затем он наследуется добавляя методы, которые отвечают за действия. --- а вопрос "будет один экземляр класса или нет" - если у вас MVC классический, без велосипедов, то контроллер у вас будет вызываться за жизненный цикл, всего один. если у вас дофига контроллеров вызывается , то наследовать функционал будет по новой, не зависимо от других Это сообщение отредактировал(а) Muerto - 25.4.2011, 14:42 |
|||
|
||||
| Kotakota |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 14.12.2010 Репутация: нет Всего: нет |
Не понял этот момент. Фронт-контроллер у меня один и есть еще контроллеры которые вызываются в зависимости от параметров в URI. Я был всегда такого мнения, что экземпляр фронт-контроллера должен вызываться только один раз и все другие контроллеры потомки должны использовать только один экземпляр класса фронт контроллера. В чем суть того, что каждый подчиненный контроллер должен создавать свой экземпляр фронт-контроллера? |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Kotakota, Не нужно гадать
Возьмите какой нить MVC фреймворк и посмотрите как делается Мой фреймворк работает вот так: Есть index который по саути дела представляет из себя boostrap используя файл конфигураций, который создает instance ядра фреймворка. Дальше идет раутер, который вызывает контроллер по тому что было получено по URL --- Если у вас какой то фронт-контроллер , котоырй выполняет роль, ядра, или/и boostrap или/и раутинга, то не вижу пречины что бы он наследовал от куда то что то... Если очень хотеть можно выявить общие свойства вашего фронт-контроллера и простых контроллеров, назвать это fatherController =-) baseController Будет наследовать от father, а простые от base Это сообщение отредактировал(а) Muerto - 25.4.2011, 19:28 |
|||
|
||||
| Kotakota |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 14.12.2010 Репутация: нет Всего: нет |
У меня так:
Index (bootstrap) -> Фронт-контроллер->Роутер->Контроллер по URI Фронт - контроллер сделал отцом У меня в коде фронт-контроллера происходит инициализация View и Router. Мой фронт-контроллер, не абстрактный класс, а простой! Мне не нужно абстрактные методы. Это нормально? Или базовый класс обязательно должен быть абстрактным? Такая вот схема... Это сообщение отредактировал(а) Kotakota - 25.4.2011, 21:32 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |