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

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

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

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

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

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

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

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

Контроллеры

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

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

модели

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

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

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

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

«… или я могу добавить туда « вспомогательные » функции, …»

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

Помощники Codeigniter