Знакомство со Slim
Slim — микрофреймворк для PHP. Фреймворк — это готовый каркас приложения, а приставка «микро» означает, что в каркасе только самое необходимое: он принимает запрос браузера, находит для него нужный код и отправляет ответ. Всё остальное — шаблоны, базу данных, вход пользователей — подключают отдельными пакетами.
Курс написан для Slim 4 и PHP 8.1 или новее.
Как выглядит приложение
Самое маленькое приложение на Slim умещается в один файл:
// public/index.php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
require __DIR__ . '/../vendor/autoload.php';
$app = AppFactory::create();
$app->get('/', function (Request $request, Response $response) {
$response->getBody()->write('Привет, Slim!');
return $response;
});
$app->run();Этот код отвечает на запрос главной страницы строкой «Привет, Slim!». Сейчас его достаточно просто прочитать: в следующем уроке вы создадите этот файл и запустите его.
Что входит в Slim и чего в нём нет
| Есть в Slim | Подключается отдельно |
|---|---|
| Маршруты — связь адреса с кодом | Шаблоны страниц — Twig |
| Объекты запроса и ответа | База данных — PDO, Eloquent, Doctrine |
| Посредники — слои вокруг обработчика | Контейнер зависимостей — PHP-DI |
| Обработка ошибок | Сессии, вход пользователей, проверка форм |
Пакеты устанавливает Composer — менеджер зависимостей PHP. Каждый урок, где нужен новый пакет, начинается с команды установки.
Slim и большие фреймворки
В Laravel или Symfony структура папок, работа с базой и шаблоны уже выбраны за вас. В Slim нет ни готовых папок, ни консольных команд для создания файлов: все файлы создают вручную и сами решают, куда их положить.
Это удобно для небольших сайтов и API — программных интерфейсов, которые отдают данные в формате JSON. Но новичку легко потеряться, поэтому в курсе структура проекта собирается по шагам, и у каждого фрагмента кода указано, в какой файл он идёт.
Что будет собрано в курсе
Сквозной пример — блог со статьями:
- Первая глава: одно приложение в файле
public/index.php— маршруты, запрос и ответ. - Вторая глава: код раскладывается по папкам
config/иsrc/, появляются классы-действия, контейнер и посредники. - Третья глава: страницы на Twig, база данных, формы, вход пользователей.
- Четвёртая глава: ошибки и журнал, API, тесты и размещение на сервере.
Готовая заготовка
Существует готовая заготовка проекта — пакет slim/slim-skeleton. В ней уже настроены папки, контейнер и тесты. В курсе она не используется: приложение, собранное своими руками, понятно до последней строки.
Частая ошибка
Slim не делает ничего «сам». Если в большом фреймворке данные формы, сессия или база доступны сразу, то здесь каждая такая возможность появляется только после того, как вы установили пакет и подключили его в коде. Когда что-то «не работает», сначала проверьте, подключено ли оно вообще.