Есть давно начатый написанный на чистом РНР (без фреймворков и цмс) сайт. И т.к. сайт "свой", а не заказчика, который может проверить качество кода, то все внимание уделялось наращиванию новых фич на сайте, а сам код писался в стиле "лишь бы работало задуманное".
В итоге получилась ТАКАЯ каша, что сейчас стало очевидно: дальнейшее развитие проекта требует просто-таки колоссальных затрат. Код приходится править во многих местах, вставки некоторых простых элементов (например, валидация) превращаются в муку.
Могу долго расписывать костыли, которыми уже подперто практически все в проекте. Но вывод один - пришло время для качественного пересмотра всего кода проекта, который написан в процедурном стиле с полным отсутствием разделения логики и хтмл. Полным - имею в виду - в функции, реализующей логику - тут же содержится и хтмл вывод результатов ее работы.
MVC. Думаю, что если уж переходить, то на какую-то выработанную сообществом модель. Пытаюсь уложить в голове страницы своего проекта на эту модель и что-то пока не укладывается.
Вот и вопрос: допустим, на странице есть блок вывода курса валют, блок стоимости топлива и блок заголовков новостей по выбранной тематике.
Как эту страницу увязать с моделью мвц? Ведь получается, что для создания этой страницы "трудятся" целых три контроллера и вьюхи: топливо, курсы валют и новости.
Как в таком случае строить правильную архитектуру MVC? Не хочу строить очередные костыли и грабли у себя на сайте, а понять, как реализуются подобные вещи правильно.
Мне нравится идея единого входа (с удовольствием откажусь от тучи рерайт правил в хтаксес), далее парсится урл и передается определенному контроллеру вместе с параметром, если есть. Но вот как быть, если страница собирается из нескольких блоков? Какова логика построения такой страницы в модели MVC? Это первый вопрос
Второй вопрос касается вида. Как грамотно и по правилам модели мвц построить представления, если к примеру, для использования одного блока в хидер надо включить джаваскрипт, который нужен только для части функционала и на определенных страницах?
Т.е. у меня есть логика. И для представления, допустим, картинок - я использую джейкарусель. Смысл этот джс включать во все страницы, если он только на странице просмотра фоток? И вот, модель выбирает нужные данные, обрабатывает и наконец-то данные попадают в вид. В виде есть пара дивов, куда эти данные в виде переменных попадают. Но как добавить в хидер джс? Правильно, я имею в виду.
Предусматривает ли данная модель что-то типа "хуков", как в друпале, когда можно изменить что-то, что делается другой частью функционала?
Вот если я это пойму - тут же начну переход на модель MVC
