slim php framework на русском
Документация
Эта документация предназначена для Slim 4. Ищете документацию по Slim 3?
Добро пожаловать
В чем смысл?
По своей сути, Slim просто диспетчер, который получает HTTP-запрос, вызывает соответствующий обработчик и возвращает HTTP-ответ. Вот и все.
Вам не всегда нужен кухонный комбайн вроде Symfony или Laravel. Это несомненно отличные инструменты, но они сликом переполнены излишним функционалом. Slim же, наоборот, предоставляет минимальный набор нужных инструментов, и не более того.
Как это работает?
Во-первых, вам нужен веб-сервер, такой как Nginx или Apache. Вы должны настроить свой веб-сервер так, чтобы он отправлял все соответствующие запросы в один файл PHP «фронт-контроллер». Вы создаете экземпляр приложения Slim и запускаете свое его в этом файле.
Приложение Slim содержит маршруты, отвечающие определенным HTTP-запросам. Каждый маршрут вызывает обработчик и возвращает HTTP-ответ. Чтобы начать работу, сначала создайте экземпляр приложения и настройте приложение Slim. Затем вы определяете маршруты своего приложения. Наконец, вы запускаете приложение. Всё просто. Вот пример приложения:
Запрос и ответ
Когда вы создаете приложение Slim, вы часто работаете непосредственно с объектами запроса и ответа. Эти объекты представляют собой фактический HTTP-запрос, полученный веб-сервером, и возможный HTTP-ответ, возвращаемый клиенту.
Каждому маршруту Slim-приложения присваиваются текущие объекты запроса и ответа в качестве аргументов его обработчика. Эти объекты реализуют популярные интерфейсы PSR-7. Маршрут Slim-приложения может проверять или манипулировать этими объектами по мере необходимости. В конечном счете, каждый маршрут приложения Slim ДОЛЖЕН вернуть объект PSR-7 совместимого ответа.
Принесите свои собственные компоненты
Slim также хорошо работает с другими компонентами PHP. Вы можете зарегистрировать дополнительные сторонние компоненты, такие как Slim-Csrf, Slim-HttpCache или Slim-Flash, которые основываются на функциональных возможностях Slim по умолчанию. Также легко интегрировать сторонние компоненты, найденные в Packagist.
Как читать эту документацию
Новичкам в Slim я рекомендую читать эту документацию от начала до конца. Если вы уже знакомы с фреймворком, то можете сразу перейти в соответствующий раздел.
Прежде чем вникать в конкретные темы (такие, как обработка запросов и ответов, маршрутизация и обработка ошибок), данная документация объясняет концепцию и архитектуру Slim.
Лицензия документации
Документация
Эта документация предназначена для Slim 3. Документацию по Slim 2 можно найти на slimframework.com.
Добро пожаловать
В чем смысл?
Как это работает?
Во-первых, вам нужен веб-сервер, такой как Nginx или Apache. Вы должны настроить свой веб-сервер так, чтобы он отправлял все соответствующие запросы в один файл PHP «front-controller». Вы создаете экземпляр и запускаете свое приложение Slim в этом файле PHP.
Приложение Slim содержит маршруты, отвечающие определенным HTTP-запросам. Каждый маршрут вызывает обратный вызов и возвращает HTTP-ответ. Чтобы начать работу, сначала создайте экземпляр и настройте приложение Slim. Затем вы определяете маршруты своего приложения. Наконец, вы запускаете приложение Slim. Это так просто. Вот пример приложения:
Запрос и ответ
Когда вы создаете Slim-приложение, вы часто работаете непосредственно с объектами Request and Response. Эти объекты представляют собой фактический HTTP-запрос, полученный веб-сервером, и возможный HTTP-ответ, возвращаемый клиенту.
Каждому маршруту Slim-приложения присваиваются текущие объекты Request and Response в качестве аргументов его подпрограммы обратного вызова. Эти объекты реализуют популярные интерфейсы PSR 7. Slim route приложения может проверять или манипулировать этими объектами по мере необходимости. В конечном счете, каждый маршрут приложения Slim MUST возвращать ответ PSR 7 объекта.
Принесите свои собственные компоненты
Slim также хорошо сочетается с другими компонентами PHP. Вы можете зарегистрировать дополнительные сторонние компоненты, такие как Slim-Csrf, Slim-HttpCache, или Slim-Flash которые основываются на функциональных возможностях Slim по умолчанию. Также легко интегрировать сторонние компоненты, найденные в Packagist.
Как читать эту документацию
Если вы новичок в Slim, я рекомендую вам прочитать эту документацию от начала до конца. Если вы уже знакомы с Slim, вы можете перейти прямо в соответствующий раздел.
Эта документация начинается с объяснения концепций и архитектуры Slim, прежде чем вникать в конкретные темы, такие как обработка запросов и ответов, маршрутизация и обработка ошибок.
Slim php framework на русском
Документация Slim 4.
Данная документация относится к 4 версии фреймворка Slim. Если Вам необходима документация к 3 версии ищите ее на официальном сайте Slim 3 Docs.
Добро пожаловать.
Slim — это микро-фреймворк PHP, с помощью которого можно быстро писать простые, но мощные веб-приложения и API. По своей сути Slim — это диспетчер, который получает HTTP-запрос, вызывает соответствующую callback-функцию, и возвращает HTTP-ответ. Это все!
В чем суть?
Slim — это идеальный инструмент для создания API, которые получают, видоизменяют или отображают данные (CRUD-приложение). Slim также является отличным инструментом для прототипирования. При желании можно даже создать полнофункциональное веб-приложение с пользовательским интерфейсом. Одной из важных особенностей данного фреймворка является то, что он очень быстрый и имеет очень мало кода. Разработчик с опытом сможет разобраться с исходным кодом фреймворка всего за один день.
Для множества проектов не всегда нужны монстрообразные фреймворки типа Laravel и Symfony. Бесспорно это отличные инструменты, но часто их функционал бывает избыточным. Slim же предлагает только минимальный набор инструментов, которые делают только то, что нужно, и ничего лишнего.
Как это работает?
Во-первых, Вам понадобится веб-сервер, Nginx или Apache (на данный момент устарел). Необходимо настроить веб-сервер таким образом, чтобы он отправлял все соответствующие запросы в один php-файл «front-contrller». Необходимо инициализировать и запустить Ваше Slim-приложение в этом файле.
Slim-приложение содержит обработчики маршрутов, которые отвечают на определенные HTTP-запросы. Каждый обработчик вызывает callback-функцию и возвращает HTTP-ответ. Для начала необходимо создать экземпляр Slim-приложения и сконфигурировать его. Далее Вы определяете маршруты Slim-приложения и запускаете его. Ниже простой пример данного приложения (файл public/index.php):
Запросы и ответы.
Когда Вы создаете Slim-приложение, Вы часто работаете непосредственно с объектами запроса и ответа. Эти объекты представляют собой фактический HTTP-запрос, полученный веб-сервером, и возможный HTTP-ответ, возвращенный клиенту.
Каждый маршрут Slim-приложения получает текущие объекты запроса и ответа в качестве аргументов для своей callback-функции. Данные объекты реализуют популярный интерфейс PSR-7. Маршрутизатор манипулирует данными объектами по мере необходимости. В конечном счете, каждый маршрутизатор должен возвращать объект ответа соответствующего формату PSR-7.
Подключение собственных компонентов.
Slim спроектирован так, что он отлично совмещается с различными PHP-компонентами, которые позволяют расширять функционал микро фреймворка. Вы можете зарегистрировать первоочередные компоненты такие как, Slim-Csrf, Slim-HttpCache, или Slim-Flash, которые по умолчанию основанны на функциональности Slim. Кроме того, Вы легко можете интегрировать сторонние компоненты, найденные на Packagist.
Руководство по обновлению
Если Вы обновляете свое приложение с 3 версии на 4, вы должны быть в курсе следующих значительных изменений.
Требование к версии PHP
Slim 4 требует PHP 7.2 и выше.
Изменения, ломающие обратную совместимость в конструкторе Slim\App constructor
Настройки приложения хранились в контейнере. Теперь они вынесены отдельно.
Удаленные настройки приложения
Изменения конейнера
Изменения в обработке базового пути
До версии 3, Slim извлекал базовый путь из директории, в которой был создан объект приложения. Теперь базовый путь должен быть вручную объявлен, если приложение выполняется не из корня домена:
Изменения компонента маршрутизации
Это значит, что группы маршрутов тоже изменили свои сигнатуры:
Новый подход Middleware
В Slim 4 мы хотели предоставить разработчикам больше гибкости и вынесли некоторые функциональные возможности в middleware. Это дает вам возможность использовать собственные реализации основных компонентов.
Очередность выполнения Middleware
Очередность выполнения middleware не изменилась с версии 3 ( Последний вошёл, первый вышел (LIFO) ).
Новая фабрика App
Новый Middleware маршрутизации
Новый middleware обработки ошибок
Обработка ошибок так же реализована в качестве middleware. Подробнее см. в Pull Request #2398.
Новые Not Found- и Not Allowed обработчики
Обработчик ошибки 404 Not Found и Обработчик ошибки 405 Not Allowed из версии 3 могут быть перенесены как показано ниже:
Новый диспетчер маршрутизации и результаты маршутизатора
Новый middleware переопределения метода
Новый middleware размера ответа
Новый middleware буферизации вывода
Микрофреймворк slim
Новое в Slim 4
Основные нововведения по сравнению с версией 3:
Как теперь создать приложение?
В третьей версии создание приложения выглядело примерно так:
Теперь конструктор приложения принимает следующие параметры:
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
$responseFactory | Psr\Http\Message\ResponseFactoryInterface | да | PSR-17 совместимая фабрика серверного http-запроса |
$container | \Psr\Container\ContainerInterface | нет | Контейнер зависимостей |
$callableResolver | \Slim\Interfaces\CallableResolverInterface | нет | Обработчик вызываемых методов |
$routeCollector | \Slim\Interfaces\RouteCollectorInterface | нет | Роутер |
$routeResolver | \Slim\Interfaces\RouteResolverInterface | нет | Обработчик результатов роутинга |
Верните мне 404 ошибку!
Middleware
Промежуточное ПО теперь должно быть реализацией PSR-15. В качестве исключения, можно передавать функции, но сигнатура должна соответствовать методу process() интерфейса \Psr\Http\Server\MiddlewareInterface
Как жить без настроек?
Без настроек жить можно. Предоставленные инструменты нам в этом помогут.
httpVersion и responseChunkSize
Настройка httpVersion отвечала за вывод версии протокола в ответе.
Настройка responseChunkSize определяла размер каждого чанка, читаемого из тела ответа при отправке в браузер.
Сейчас эти функции можно возложить на эмиттер ответа.
Подключаем к приложению
outputBuffering
Данная настройка позволяла включать/выключать буфферизацию вывода. Значения настройки:
determineRouteBeforeAppMiddleware
Эта настройка позволяла получить текущий маршрут из объекта запроса в промежуточном ПО
На замену предоставляется \Slim\Middleware\RoutingMiddleware
displayErrorDetails
Настройка позволяла выводить подробности ошибок. При отладке это неплохо упрощает жизнь.
addContentLengthHeader
Данная настройка позволяла включать/отключать автодобавление заголовка Content-Length со значением объема данных в теле ответа
Заменяет опцию промежуточное ПО \Slim\Middleware\ContentLengthMiddleware
routerCacheFile
Теперь вы можете напрямую установить файл кеша роутера
Создание приложения на Slim-4
Чтобы более подробно рассмотреть фреймворк, напишем небольшое приложение.
Приложение будет иметь следующие роуты:
Логика будет в контроллерах, рендерить страницу будем через шаблонизатор Twig
Бонусом добавим консольное приложение на базе компонента Symfony Console с командой, отображающей список роутов
Шаг 0. Установка зависимостей
В качестве контенера зависимостей я выбрал ultra-lite/container, как легкий, лаконичный и соответствующий стандарту.
PSR-7 и PSR-17 разработчики Slim предоставляют в одном пакете slim/psr7. Им и воспользуемся
Предполагается, что пакетный менеджер Composer уже установлен.
Создаём папку под проект (в качестве примера будет использоваться /path/to/project ) и переходим в неё.
Добавим в проект файл composer.json со следующим содержимым:
и выполним команду
Теперь у нас есть все необходимые пакеты и настроен автозагрузчик классов.
Шаг 1. Каркас приложения
Ах да, ещё неплохо исключить конфиги окружения из репозитория. Ведь там могут быть явки/пароли. Кэш тоже исключим.