Эта глава — короткое введение в концепции MVC а именно как они реализованы в Cake. Если Вы новичок в MVC (Model-View-Controller), то эта глава безоговорочно для вас. Мы начнем с подробного обсуждения основных MVC концепций, перейдем к специфике приложений MVC в Cake PHP, и покажем некоторые простые примеры Cake PHP с использованием MVC.
MVC
Model-View-Controller (Модель-Отображение-Контроллер) — это программный шаблон, который помогает вам логически разделить ваш код, сделать его многократно используемым и подлежащим корректировке, в общем улучшить. Впервые MVC был описан группой авторов единомышленников Gang of Four (Банда Четырех). Dean Helman писал (фрагмент из официального описания Objective Toolkit Pro):
«MVC — это метод разделения приложения, или даже куска его интерфейса на три части: модель, отображение, и контроллер. MVC была изначально разработана для того, чтобы «отразить» роль традиционных приложений в современные реалии графического интерфейса пользователя (GUI).
Ввод -> Обработка -> Вывод
Контроллер -> Модель -> Отображение
«Пользователь вводит данные из внешнего мира, визуальное отображение разделено и управляется моделью, отображением и контроллером. Контроллер интерпретирует введенные пользователем с клавиатуры и мыши данные и преобразовывает эти действия в команды, которые посылаются модели и/или отображают эффект примененных изменений. Модель управляет одним или больше элементами данных, реагирует на запросы о состоянии, и отвечает инструкциям по смене состояния. Отображение управляет прямоугольной областью экрана и ответственно за представление данных пользователю в графическом и текстовом виде.»
В терминологии Cake, Модель означает обычную таблицу/запись в базе данных, а также ее отношения к другим таблицам и записям. Модель также включает в себя правила верификации данных, которые применяются когда данные модели добавляются или обновляются. Отображение — это результат конечный вывод обработанной информации на экран пользователя, т.е. это обычные HTML-файлы, в которые внедрен PHP-код. Контроллер Cake управляет запросами сервера. Такой расклад позволяет пользователю вводить данные (URL и POST), затем применяется Модель для чтения и записи данных В и ИЗ базы данных и других источников, и, в конце-концов, обработанная информация попадает к файлам отображения.
Чтобы максимально упростить это, организовать ваше приложение, Cake использует этот шаблон не только для управления тем как объекты взаимодействуют с вашим приложением, но также и тем как сохранены файлы, более детально об этом дальше.
Обзор схемы размещения файлов Cake
Когда вы распакуете Cake на свой сервер вы увидите там три основных каталога:
В каталоге cake находятся основные библиотеки Cake, вам не понадобится их трогать.
Каталог app будет служить местом хранения ваших приложений и нужных им каталогов и файлов. Разделение между каталогами cake и app позволит вам иметь множество каталогов с приложениями, которые используют те же самый библиотеки Cake. Это также упрощает процесс обновления Cake PHP: вам достаточно только закачать последнюю версию Cake и перезаписать главные библиотеки в папке cake. Нет нужды волноваться, что вы перезапишите что-то, что вы написали для своего приложения.
Вы можете использовать директорию vendors, чтобы хранить там сторонние библиотеки. Вы узнаете больше о вендорах позже, но основная мысль в том, что вы можете получить доступ к классам, которые вы поместили туда, используя функцию vendor().
Давайте взглянем на полную схему размещения файлов: