MVC Design. Сколько контроллеров может/должно/должно быть иметь в проекте веб-приложения CodeIgniter MVC?

Я создаю относительно простое веб-приложение на PHP, используя структуру CodeIgniter MVC. Раньше я разрабатывал PHP-приложения, но никогда не был дисциплинирован. Я привык к структуре MVC, однако два вопроса продолжают возвращать меня к чертежной доске, и это замедляет развитие.

  • Есть ли наилучшая практика в отношении того, сколько контроллеров может иметь веб-приложение? У меня есть один (довольно большой) контроллер для моего приложения, который включает в себя бизнес-логику, логику представления формы и т.д. Хотя это работает, я обсуждаю, имеет ли смысл иметь отдельные контроллеры, например. один для обработки и подачи формы, другой для управления пользователями (сеанс, вход в систему, регистрация) и т.д. И снова я не хочу переоценивать этот вопрос. Часть, где я повесил трубку:, у контроллера есть функция индекса по умолчанию, которая загружается по родительскому URL. Вся бизнес-логика начинается здесь (например, подача формы, что-то делать с данными и т.д.). Я отказался от создания новых функций в том же контроллере, что и разработка. Это работает, но часть моей цели - также научиться лучшей практике, и что-то говорит мне, что я ошибаюсь.

  • Если для функций чтения/записи базы данных используются модели только, или я могу добавить туда "вспомогательные" функции, например, generate_random_number, validate_login_credentials, login_session, logout_session и т.д.

Ответы

Ответ 1

(Это мое субъективное мнение - оно хорошо ко мне относилось)

Модели должны быть мясом и костью всех ваших приложений. Модели должны обрабатывать всю бизнес-логику и управление базами данных. Между тем, контроллеры должны быть как можно более тонкими, только реально обеспечивая интерфейс между моделью и представлением.

Например, на экране входа в систему контроллер должен предоставить пользователю вид входа. Когда пользователь вводит свою информацию, контроллер должен обрабатывать входную валидацию и перенаправлять ввод в модель, которая должна отвечать "успехом" или "сбоем". Следовательно, контроллер должен перенаправить пользователя на приборную панель или отправить его обратно на экран входа в систему с сообщением об ошибке - соответственно.

Подводя итог: Модели должны быть жирными, контроллеры должны быть тонкими.

Ответ 2

Контроллеры

Все зависит от характера приложения, но в целом ответ NO у вас не должно быть "одного довольно большого контроллера".

Чем больше вы разбиваете приложение на более мелкие части, тем легче его поддерживать.

Модели

Непосредственно из документов Codeigniter

Модели - это классы PHP, которые предназначены для работы с информацией в вашей базе данных.

Ответ: да, вы должны использовать только модели для взаимодействия данных.

Я думаю, что смешно, что ты на самом деле ответил себе

"... или я могу добавить туда " помощник ",..."

Случается, что у Codeigniter есть средство, которое обрабатывает этот тип функциональности...

Помощники Codeigniter