Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Знакомство со 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. Но новичку легко потеряться, поэтому в курсе структура проекта собирается по шагам, и у каждого фрагмента кода указано, в какой файл он идёт.

Что будет собрано в курсе

Сквозной пример — блог со статьями:

  1. Первая глава: одно приложение в файле public/index.php — маршруты, запрос и ответ.
  2. Вторая глава: код раскладывается по папкам config/ и src/, появляются классы-действия, контейнер и посредники.
  3. Третья глава: страницы на Twig, база данных, формы, вход пользователей.
  4. Четвёртая глава: ошибки и журнал, API, тесты и размещение на сервере.

Готовая заготовка

Существует готовая заготовка проекта — пакет slim/slim-skeleton. В ней уже настроены папки, контейнер и тесты. В курсе она не используется: приложение, собранное своими руками, понятно до последней строки.

Частая ошибка

Slim не делает ничего «сам». Если в большом фреймворке данные формы, сессия или база доступны сразу, то здесь каждая такая возможность появляется только после того, как вы установили пакет и подключили его в коде. Когда что-то «не работает», сначала проверьте, подключено ли оно вообще.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.