Модель Обычно таблица базы данных представлена моделью.Например, если у вас есть таблица с именем «surveys», вы захотите иметь класс surveys_model
, который позволяет выполнять операции на уровне таблицы с этой таблицей (выбрать, вставить, обновить, удалить и т. Д.).
Затем вы можете создать другую модель для представления одной строки в этой таблице с именем survey_model
(обратите внимание, что она единственная).Этот класс обычно имеет свойства, которые соответствуют 1-к-1 столбцам в таблице.В этой модели вы можете применять бизнес-правила.Например, если вы не хотите, чтобы опрос содержал один и тот же вопрос дважды, вы можете добавить логику, чтобы проверить, существует ли вопрос при добавлении нового вопроса.
Процесс взятия записи в базе данных и созданияобъект называется «отображение», и есть программное обеспечение, которое делает это автоматически (программное обеспечение ORM).Вы также можете свернуть свое собственное простое отображение, так как большинство ORM имеет некоторую кривую обучения.
Вы также можете пропустить отображение и работать с результатом db напрямую (для чтения / вывода).Когда вы хотите записать данные, вы просто передаете данные в виде параметров или в виде массива в модель уровня таблицы.
Представление Представление содержит код переднего плана (HTML/ CSS / JS) для отображения формы пользователю.Если пользователь просматривает существующий опрос (скажем, в целях редактирования), то модель должна быть доступна для просмотра (или, по крайней мере, некоторых данных из модели).
Единственная логика здесьдолжно быть для целей отображения.Например, показать один блок текста при определенном условии, а другой блок текста при другом условии (но если весь вывод является условным, он должен быть разделен на 2 представления, а логика должна быть перемещена в контроллер для загрузкиправильный вид).
Контроллер Это то, что определяет, какой вид показывать, какие модели загружаются и какие данные передаются в вид.Вы можете передать всю модель или только некоторые данные из модели.
Он также контролирует взаимодействие между представлением и моделью.Например, если вы публикуете форму, контроллер получит данные формы, проверит их, загрузит модель, обновит данные в модели данными публикации и сохранит модель.Затем он может отобразить сообщение об успехе или ошибке (или перенаправить на совершенно новую страницу).
Иногда вы обнаружите, что сложно сгруппировать связанные функции вместе в контроллере, потому что его имена классов и методов используются вмаршрутизации, или вы обнаружите, что контроллеры становятся слишком длинными и сложно управлять.Здесь библиотеки входят.
Вы можете перемещать логику из контроллеров в библиотеки.Таким образом, вы можете сохранить свои контроллеры стройными и сгруппировать свою логику, не беспокоясь о влиянии на маршрутизацию.
Для функций, которые вам нужны в глобальном масштабе и не нуждаются в классе, вы можете поместить их в помощники .Вы можете просмотреть встроенные помощники CI, чтобы увидеть типы функций, которые принадлежат вспомогательным файлам.