С CMS (PHP / MySQL), которая становится все больше и больше, а ее код сложнее поддерживать, я думаю о применении модели MVC, чтобы сделать ее более понятной и прозрачной. Я немного разгадал эту тему, и, думаю, у меня все получилось, за исключением части просмотров. Вот что я имею в виду:
index => controllers <=> models
controllers => views
index.php, который выступает в качестве основного контроллера (маршрутизатора) и создает экземпляры классов контроллеров на основе параметров в URL. Контроллер классов общается с моделями классов для обновления и извлечения информации в / из базы данных. И после этого контроллер обеспечивает отображение представления (в форме шаблонов) и принимает обработанные данные для отображения. Однако ...
Идея состоит в том, чтобы перенести всю логику с вида на контроллер, верно? Или, по крайней мере, далеко от поля зрения - чтобы не было обсуждения жирных / тощих контроллеров / моделей. Но каким бы образом я ни смотрел на это, мне все равно нужны динамические представления, и для этого также потребуется некоторая логика. Например, отображение определенных параметров для определенных пользователей в зависимости от их уровня и прав (обновление, обновление / удаление и т. Д.). Так что это сводится к заявлениям if / else и тому подобным вещам. Это нормально? И если да, то сколько из этой «простой» логики «разрешено»? Моя точка зрения доходит до того, что другой шаблон начинает приобретать больше смысла (например, profile_view
и profile_edit
).
Еще один простой пример. Скажем, один пользователь может видеть 5 из 10 полей профиля, а другой - 10/10. Должен ли я получить всю информацию для всех 10 полей через контроллер и определить в представлении, отображать ли ее? Или перенести решения такого рода в контроллер, а также получить информацию для 5 или 10 полей и отобразить только доступные поля в представлении на основе переданной информации? Потому что во многих ситуациях гораздо проще собрать все данные и игнорировать некоторые из них, в отличие от незнания того, что доступно, и необходимости постоянно проверять это.