MVC Design - Сколько контроллеров можно / нужно / нужно иметь в проекте веб-приложения CodeIgniter MVC? - PullRequest
13 голосов
/ 20 апреля 2011

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

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

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

Ответы [ 2 ]

4 голосов
/ 20 апреля 2011

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

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

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

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

2 голосов
/ 20 апреля 2011

Контроллеры

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

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

Модели

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

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

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

Мне кажется забавным, что вы на самом деле ответили себе

"... или я могу поставить 'helper' также работает там, ... "

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

Помощники Codeigniter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...