Знакомство с CakePHP
CakePHP — фреймворк PHP, то есть готовый каркас сайта: в нём уже есть маршруты, работа с базой данных, формы и проверка данных. Главная его идея — соглашения вместо настроек: если назвать файлы по правилам, фреймворк сам свяжет их между собой. Курс рассчитан на CakePHP 5.
Что понадобится
PHP 8.1 или новее с расширениями mbstring и intl, установщик пакетов Composer и база данных — MySQL, PostgreSQL или SQLite.
Создание проекта
composer create-project --prefer-dist cakephp/app:~5.0 blogКоманда создаёт папку blog и скачивает в неё фреймворк. Если Composer спросит про права на папки — ответьте Y.
Запуск
cd blog
bin/cake serverОткройте http://localhost:8765. Появится страница-приветствие с проверкой окружения: версия PHP, права на папки, подключение к базе данных. Строка про базу пока красная — её настроим позже. Сервер останавливают сочетанием Ctrl+C.
Папки проекта
blog/
├── bin/ команда cake
├── config/ настройки и маршруты
├── src/ код приложения
│ ├── Controller/
│ ├── Model/
│ └── View/
├── templates/ шаблоны страниц
├── webroot/ index.php, стили, скрипты, картинки
├── tests/ тесты
├── tmp/ кеш и временные файлы
├── logs/ журналы
└── vendor/ фреймворк и пакетыПочти вся работа идёт в трёх папках: config, src и templates. Папку vendor заполняет Composer — её не редактируют.
Первая страница
Создайте вручную два файла. Контроллер — класс, который готовит данные для страницы:
// src/Controller/HelloController.php
namespace App\Controller;
class HelloController extends AppController
{
public function index(): void
{
$this->set('name', 'CakePHP');
}
}Шаблон — файл с разметкой страницы, templates/Hello/index.php:
<h1>Привет, <?= h($name) ?>!</h1>Откройте http://localhost:8765/hello — на странице появится «Привет, CakePHP!». Маршрут писать не пришлось: по адресу /hello фреймворк сам нашёл HelloController, метод index() и шаблон в папке Hello. Это и есть соглашения — о них следующий урок.
Панель отладки
В правом нижнем углу страницы виден значок DebugKit. Щелчок по нему открывает панель: запросы к базе, переменные шаблона, данные запроса, время работы. Панель есть только в режиме разработки.
Частая ошибка
Команда bin/cake работает только из корня проекта. Запуск из другой папки даёт «command not found» или «No such file». Сначала перейдите в проект командой cd blog. В командной строке Windows пишут обратную черту: bin\cake server.