В этом материале мы обсудим, что такое микрофреймворк Slim Framework и где он может быть полезен.

Использование Slim PHP Framework

В этом материале мы обсудим, что такое микрофреймворк Slim Framework и где он может быть полезен.

Slim - это PHP микрофреймворк, предназначенный для быстрого написания простых, но в тоже время мощных web приложений и API. В своей основе фреймворк Slim - это диспетчер, который получает HTTP запрос, вызывает назначенную данному запросу callback-функцию и возвращает HTTP ответ. Вот и все.

Для чего он нужен?

Slim Framework - это идеальный инструмент для создания API, которые используют, переиспользуют какие-либо данные или же предоставляют к ним доступ. Также это прекрасный инструмент для быстрого прототипирования, когда задумка требует скорейшей реализации. Кроме того, с помощью микрофреймворка Slim можно создавать полнофункциональные web-приложения с пользовательским интерфейсом. Он очень быстрый, имеет небольшую кодовую базу - только то, что нужно и больше ничего.

Как запустить?

Для начала необходимо иметь установленный web-сервер. Web-сервер необходимо настроить так, чтобы все запросы он посылал к фронт-контроллеру, т.е. к index.php. В фронт-контроллере создается, настраивается и запускается приложение. Приложение содержит маршруты (URL-адреса) , которые соответствуют конкретным HTTP запросам. Затем каждый маршрут запускает соответствующий обработчик, представляющий функцию обратного вызова, и возвращает HTTP ответ.

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

При создании PHP Slim приложения, почти всегда приходиться взаимодействовать с объектами Request и Response. Эти объекты инкапсулируют HTTP запросы получаемые сервером и ответы возвращаемые им в сущности, с которыми удобно работать посредством объектно-ориентированного стиля. У каждого маршрута есть собственная callback-функция которая выполняется, если запрошенный адрес соответствует маршруту. В каждую callback-функцию предаются объекты Response и Request. Они реализуют популярный стандарт PSR 7. После получение запроса функция ДОЛЖНА вернуть объект Response, соответствующий этому стандарту.

Работа с внешними компонентами

PHP микрофреймворк Slim специально спроектирован таким образом, чтобы максимально упростить взаимодействие со сторонними компонентами. С помощью компонентов сторонних разработчиков можно расширить функционал приложения. Эти компоненты могут быть найдены, в частности, в широко известном репозитории PHP пакетов - Packagist.

Установка

Для работы с Slim Framework необходимо иметь PHP 5.5 и новее, а также нужно иметь настроенные правила конфигурации сервера, для перенаправления всех запросов на index.php. Установку будем выполнять с помощью пакетного менеджера Composer. Если вы не знаете, что такое пакетный менеджер Composer, то на сайте есть статья о нем. Далее необходимо создать папку, например, MyProject.

Открываем консоль команд и вводим следующее:

 $ cd путь-к-папке/MyProject
  $ composer require slim/slim "^3.0"

Последняя команда установит сам фреймворк и все его зависимости. После этого в папке MyProject необходимо создать папку public, которая будет являться корневой директорией нашего сайта доступной извне, там же надо создать два файла: index.php и .htaccess, последний файл конфигурации Apache нужен для перенаправления всех запросов к index.php.

Содержимое файла .htaccess:

 RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteRule ^ index.php [QSA,L]

А вот непосредственно код нашего приложения:

<?php

  use \Psr\Http\Message\ServerRequestInterface as Request;
  use \Psr\Http\Message\ResponseInterface as Response;

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

  // создаем и настраиваем приложение
  $config = ['settings' => [
    'addContentLengthHeader' => false,
  ]];

  // передаем массив настроек в конструктор класса Slim\App
  $app = new \Slim\App($config);

  // определяем маршруты
  // главная страница
  $app -> get('/',function($request, $response)) {
     return $response -> write('Добро пожаловать на мою страницу');
  });

  // страница с адресом localhost:9090/hello/Alex
  $app -> get('/hello/{name}', function ($request, $response, $args) {
     return $response->write("Hello " . $args['name']);
  });

  // Запускаем приложение
  $app->run();

?>

Поясню код выше. С помощью директив use мы импортируем необходимые нам классы из стандарта PSR 7 о котором я говорил выше. Затем включаем в наш index.php файл автозагрузки классов. Такой порядок может показаться несколько необычным, однако он легален с точки зрения языка. После этого создаем массив строк представляющих собой настройки нашего web-приложения. И, наконец, добавляем маршруты с помощью метода get класса Slim\App. Запускаем встроенный в PHP web-сервер с помощью следующих команд:

  $ php -S localhost:9090 -t public public/index.php

Открываем браузер по адресу localhost:9090 и смотрим.

Таким образом сегодня мы с Вами познакомились с PHP микрофреймворком Slim Framework. Узнали в каких случаях его можно и стоит использовать. Создали тестовое приложение. Спасибо за внимание.