Оглавление
CakePHP
Фреймворк на соглашениях: мощная ORM, генератор кода bake, формы и проверка данных из коробки.
1.Начало работы
- Знакомство с CakePHPЧто такое CakePHP, как создать проект, запустить его и что лежит в его папках.
- Соглашения об именахКак называть таблицы, классы, файлы и столбцы, чтобы CakePHP сам связал их между собой.
- Консоль и генератор bakeКоманда bin/cake: запуск сервера, список команд и создание кода генератором bake.
- МаршрутыФайл config/routes.php: как связать адрес с контроллером, передать параметр, дать маршруту имя и построить ссылку.
- КонтроллерыЧто такое контроллер и действие, где лежат контроллеры, как создать их и передать данные в шаблон методом set.
- Запрос и ответКак прочитать параметры адреса и поля формы, перенаправить посетителя и вернуть JSON из действия контроллера.
- ШаблоныПапка templates: как назвать файл шаблона, вывести переменные из контроллера и экранировать их функцией h.
- Макеты, элементы и помощникиОбщая рамка страниц в templates/layout, повторяющиеся фрагменты в templates/element и помощники Html и Url для ссылок.
- НастройкиФайлы config/app.php, app_local.php и .env: где хранить настройки, как читать их через Configure и добавлять свои.
2.База данных
- Подключение к базе данныхКак создать базу, записать параметры подключения в config/app_local.php и проверить, что CakePHP её видит.
- МиграцииКак описать таблицу базы данных в коде, создать её командой и изменить структуру новой миграцией.
- Начальные данныеСиды в config/Seeds: как заполнить таблицу начальными или тестовыми записями одной командой.
- Таблицы и записиОснова ORM CakePHP: классы таблицы и записи в src/Model, их создание командой bake model и первое использование в контроллере.
- Чтение данныхЗапросы ORM: find, where, orderBy, limit, first, get и count — как получить из таблицы нужные записи.
- Сохранение и удалениеКак создать запись через newEmptyEntity, заполнить её методом patchEntity, сохранить, изменить и удалить.
- Связи между таблицамиСвязи belongsTo, hasMany и belongsToMany в классе таблицы и загрузка связанных записей через contain.
3.Приложение
- Проверка данныхПравила проверки в validationDefault и правила приложения в buildRules: где их писать и как получить ошибки.
- ФормыПомощник Form: как вывести форму по записи, принять её в действии, показать ошибки и сделать кнопку удаления.
- Сообщения и сессииКомпонент Flash для сообщений после действия и сессия для данных посетителя между запросами.
- Постраничный выводМетод paginate в контроллере и помощник Paginator в шаблоне: страницы списка, ссылки и сортировка по столбцам.
- ПоведенияПоведения таблиц: готовое Timestamp, другие встроенные и собственное поведение в src/Model/Behavior.
- Вход на сайтПлагин Authentication: установка, хеширование пароля, настройка в Application.php, действия входа и выхода.
- Права доступаПлагин Authorization: политики в src/Policy, проверка прав в действии и в шаблоне.
- Загрузка файловКак принять файл из формы, проверить его, сохранить в webroot/uploads и показать на странице.
4.Развитие проекта
- REST APIAPI на CakePHP: маршруты resources, ответы JSON через JsonView, приём данных и коды состояния.
- ПосредникиЧто такое middleware, где находится очередь посредников в Application.php и как написать свой в src/Middleware.
- КешированиеКласс Cache: как сохранить результат тяжёлого запроса, прочитать его, сбросить и где настроить хранилище.
- Отправка почтыКласс Mailer: настройка транспорта, простое письмо, свой класс писем в src/Mailer и шаблоны писем.
- Свои командыКонсольные команды в src/Command: создание через bake, аргументы и ключи, вывод текста и запуск по расписанию.
- Журнал и ошибкиКласс Log и папка logs, функция debug, исключения для ошибок 404 и 403 и свои страницы ошибок.
- Основы тестированияТесты в папке tests: тестовая база, фикстуры, проверка страниц и форм и запуск через PHPUnit.
- Размещение на сервереКак перенести проект CakePHP на сервер: корень сайта webroot, рабочий режим, права на папки и команды обновления.