Пару вопросов по MVC. Поможете?

Здравствуйте!

Написал свой мини-фреймворк. Так вот. На сайте есть выбор валюты, будут 2 переменные с типами (wmr, wmz, wme) и названиями (рубли, доллары, евро) где типы используются в моделе, а названии в визуализации. Как их правильно и где хранить?

Еще вопрос. Есть некоторые части сайта которые повторяются на многих страницах сайта, а их контент берется с БД. Их каждый раз запрашивать в контроллере? т.е. дублировать код в моделе и котроллере? что посоветуете?
  • Вопрос задан
  • 356 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
что посоветуете?


1) забудьте об MVC на минутку. Пока мы будем говорить о "модели". Так же пока забудьте о представлении, HTML и т.д. Только PHP, только хардкор.
2) вынесите все действия в отдельные классы, что-бы у вас был по объекту на действие
3) вынесите все дублирование в отдельные объекты (это что бы конкретизировать что подразумевается под вторым пунктом) и вынесите все в зависимости
4) поскольку у вас стало много объектов - воспользуйтесь контейнером зависимостей
5) для работы с базой данных имеет смысл организовать DAO например. То есть что бы все что относится к SQL что бы было как-то сокрыто в них а не размазано по всем объектам. Так же можете почитать на тему Table Data Gateway.

То есть у нас должно сформироваться некое API. Нам нужны новости - достаем объект, который умеет их доставать. Нужно что-то еще - для этого чего-то тоже найдется объект умеющий это. Как он будет это делать - дело третье.

Далее, надо добавить прослойку, которая будет конвертировать данные возвращаемые предыдущим API, в тот формат, в который мы хотим. Это будут контроллеры по сути. Для них нужен роутер, шаблонизатор и т.д.

Дабы устранить дублирования UI-ки имеет смысл выделить отдельные компоненты (например блок с последними новостями - отдельный UI компонент). То есть страница будет собираться как-бы из кусочков.

Ну как-то так.
Ответ написан
Комментировать
@dev400
в моделе реализуете выборку, в контроллере вызываете модель и передаете ее в шаблон. В шаблоне через цикл выводите данные

7e0b800fa62a4606afca687518e8a76e.jpeg

Контроллер главной страницы(к примеру) получает запрос, и дергает виджет. Виджет дергает базу данных, которая возвращает ему массив из mysql. Этот массив из модели передается в шаблон виджета. Далее виджет возвращает в контроллер главной страницы уже сформированное представление, которое контроллер главной страницы передает в шаблон.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы