Здравствуйте.
Нужно "спрограммировать" серверную часть сайта.
Интересует структура(если можно так выразиться) классов на сайте.
МОДЕЛЬ
Предполагается создать 1 класс модели, который будет содержать все методы для всех типов страниц.
КОНТРОЛЛЕР
1 Базовый контроллер(абстрактный),. И классы-контроллеры для каждой страницы, которые наследуют базовый(абстрактный).
ВИД
Классов для вида создаваться не будет. Так как вид - это свёрстанные странички, в которых содержаться вставки типа <?=$news['text']?>
Вид includ-ируется в контроллер после получения данных и обработки их в Модели
Интересует вопрос, "правильной" ли является такая архитектура кода на сайте?
PS - для каждого типа страницы своя точка входа.
1. dezvolt - 03 Октября, 2012 - 20:36:58 - перейти к сообщению
2. DeepVarvar - 03 Октября, 2012 - 20:58:24 - перейти к сообщению
Нет.
3. dezvolt - 03 Октября, 2012 - 21:01:13 - перейти к сообщению
DeepVarvar пишет:
Нет.
Если можно, то пару слов, о том, что именно неправильно?
4. DeepVarvar - 03 Октября, 2012 - 21:08:03 - перейти к сообщению
Модель - предполагается базовая модель, а так же ее потомки обладающие расширенным и уникальным ф-ционалом.
Контроллер - лучше сперва один фронт-контроллер, диспетчеризирующий "куда кого зачем и почему", а так же базовый контроллер, которого наследуют прочие контроллеры, к которым и "отсылает" фронт-контроллер.
Вид - не надо путать view и layout, Вид должен быть инициализирован в самом начале, насколько это возможно.
Точка входа должна быть одна: router -> frontController -> controller -> action -> assignToView
Контроллер - лучше сперва один фронт-контроллер, диспетчеризирующий "куда кого зачем и почему", а так же базовый контроллер, которого наследуют прочие контроллеры, к которым и "отсылает" фронт-контроллер.
Вид - не надо путать view и layout, Вид должен быть инициализирован в самом начале, насколько это возможно.
Точка входа должна быть одна: router -> frontController -> controller -> action -> assignToView
5. digi - 03 Октября, 2012 - 21:11:03 - перейти к сообщению
не поддерживаю товарища DeepVarvar ;)
6. Мелкий - 03 Октября, 2012 - 21:19:32 - перейти к сообщению
dezvolt пишет:
Предполагается создать 1 класс модели, который будет содержать все методы для всех типов страниц.
Вы себе представляете объём этого "класса"?
Несмотря ни на что уже к 10тыс. строк это будет неподдерживаемый монстр.
dezvolt пишет:
Так как вид - это свёрстанные странички, в которых содержаться вставки типа <?=$news['text']?>
Потом разбираться что где и откуда проще, если каждый инклюд будет жить в своей локальной области видимости, а не видеть все данные контроллера.
Классы при этом для них создавать совершенно не нужно. Достаточно одной фабрики (см. одноимённый паттерн)
7. dezvolt - 03 Октября, 2012 - 21:27:42 - перейти к сообщению
Спасибо большое DeepVarvar
Конечно мой вопрос может показаться дурацким, но я его всё же задам!
На сайте 5 типов страниц.
Допустим я сделаю, как вы сказали базовую модель и её потомки с уник. функционалом
Так же создам фронтовой контроллер и базовый и его потомки
Но упущу создание класса View, а просто инклюдирую layout
Это будет большим грехом ?
Конечно мой вопрос может показаться дурацким, но я его всё же задам!
На сайте 5 типов страниц.
Допустим я сделаю, как вы сказали базовую модель и её потомки с уник. функционалом
Так же создам фронтовой контроллер и базовый и его потомки
Но упущу создание класса View, а просто инклюдирую layout
Это будет большим грехом ?
8. DeepVarvar - 03 Октября, 2012 - 21:38:57 - перейти к сообщению
digi пишет:
Why?не поддерживаю товарища DeepVarvar ;)
(Добавление)
dezvolt пишет:
Нет, в ад точно не попадете
Но упущу создание класса View, а просто инклюдирую layout
Это будет большим грехом ?
Это будет большим грехом ?
9. caballero - 03 Октября, 2012 - 21:56:09 - перейти к сообщению
Цитата:
Но упущу создание класса View, а просто инклюдирую layout
Это будет большим грехом ?
Это будет большим грехом ?
компилятору PHP начхать какой ты создал или не создал класс и как его назвал.
10. chubrick - 15 Октября, 2012 - 21:12:40 - перейти к сообщению
5 типов страниц.. Предположим, что они по юрл никак не отличаются (site.ru/pages/1, site.ru/pages/2 итд). Фронт получает id, и запускает контроллер PagesCtrl.
PagesCtrlумеет только определять тип странички и запускать нужный контроллер, и передавать ему id. По mvc определить тип он должен через модель.
Например так:
PagesCtrlумеет только определять тип странички и запускать нужный контроллер, и передавать ему id. По mvc определить тип он должен через модель.
Например так:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- Class PagesCtrl {
- public function defautAction($id) {
- $model = new TypeModel();
- $type = $model->getType($id);
- //продолжение кода
- }
- }
Пример:
страница с id=1 это, например, тип1
Запрос: site.ru/pages/1
Фронт ------>PagesCtrl----->Type1Ctrl
Теперь Type1Ctrl – это основной контроллер, который выполняет все действия, связанные со страничками первого типа.
пример Type1Ctrl:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- class Type1Ctrl
- {
- public function defautAction($id)
- {
- $model = new Type1Model();
- $values = $model->load($id)->getValues();
- $view = new tplView("templates/type1Pages.php", $values);
- $view->render();
- }
- }
Класс tplView отвечает за подключение файла и передачу в него параметра $values. Дальше в шаблоне может быть что угодно, главное чтобы в $values попали нужные данные.