Microframework Slim

Документация 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):

<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

require __DIR__ . '/../vendor/autoload.php';

/**
 * Instantiate App
 *
 * In order for the factory to work you need to ensure you have installed
 * a supported PSR-7 implementation of your choice e.g.: Slim PSR-7 and a supported
 * ServerRequest creator (included with Slim PSR-7)
 */
$app = AppFactory::create();

// Add Routing Middleware
$app->addRoutingMiddleware();

/**
 * Add Error Handling Middleware
 *
 * @param bool $displayErrorDetails -> Should be set to false in production
 * @param bool $logErrors -> Parameter is passed to the default ErrorHandler
 * @param bool $logErrorDetails -> Display error details in error log
 * which can be replaced by a callable of your choice.

 * Note: This middleware should be added last. It will not handle any exceptions/errors
 * for middleware added after it.
 */
$errorMiddleware = $app->addErrorMiddleware(true, true, true);

// Define app routes
$app->get('/hello/{name}', function (Request $request, Response $response, $args) {
    $name = $args['name'];
    $response->getBody()->write("Hello, $name");
    return $response;
});

// Run app
$app->run();

Запустите веб-сервер, введите в строке браузера, к примеру, http://127.0.0.1:8080/hello/vova , и в окне браузера отобразится: Hello, vova

Запросы и ответы.

Когда Вы создаете Slim-приложение, Вы часто работаете непосредственно с объектами запроса и ответа. Эти объекты представляют собой фактический HTTP-запрос, полученный веб-сервером, и возможный HTTP-ответ, возвращенный клиенту.

Каждый маршрут Slim-приложения получает текущие объекты запроса и ответа в качестве аргументов для своей callback-функции. Данные объекты реализуют популярный интерфейс PSR-7. Маршрутизатор манипулирует данными объектами по мере необходимости. В конечном счете, каждый маршрутизатор должен возвращать объект ответа соответствующего формату PSR-7.

Подключение собственных компонентов.

Slim спроектирован так, что он отлично совмещается с различными PHP-компонентами, которые позволяют расширять функционал микро фреймворка. Вы можете зарегистрировать первоочередные компоненты такие как, Slim-Csrf, Slim-HttpCache, или Slim-Flash, которые по умолчанию основанны на функциональности Slim. Кроме того, Вы легко можете интегрировать сторонние компоненты, найденные на Packagist.