Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Навіщо стандарти PSR-7, PSR-15, PSR-17 і PSR-18?

Це спільні інтерфейси PHP-FIG для роботи з HTTP. Вони дозволяють бібліотекам не залежати від конкретного фреймворку чи HTTP-клієнта:

  • PSR-7 - інтерфейси HTTP-повідомлень: RequestInterface, ResponseInterface, UriInterface, потоки. Об'єкти незмінні: withHeader() повертає нову копію.
  • PSR-17 - фабрики для створення цих об'єктів, щоб бібліотека не викликала new конкретного класу.
  • PSR-15 - серверні обробники й middleware: RequestHandlerInterface, MiddlewareInterface.
  • PSR-18 - HTTP-клієнт: ClientInterface::sendRequest().
final class GithubApi
{
    public function __construct(
        private ClientInterface $http,             // Guzzle, Symfony HttpClient...
        private RequestFactoryInterface $requests,
    ) {}
}

Що це дає:

  • SDK пише код один раз, а застосунок підставляє клієнт, який уже використовує.
  • Middleware, написане за PSR-15, працює в Slim, Mezzio та інших PSR-сумісних фреймворках.
  • У тестах легко підставити фейковий клієнт.

Laravel використовує власні класи Request/Response на базі Symfony HttpFoundation, а не PSR-7. Але конвертувати можна (пакет symfony/psr-http-message-bridge), а Guzzle під HTTP-клієнтом Laravel реалізує PSR-18.

Докладніше в документації: Стандарти PHP-FIG

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання