PHP: PSR-7 (HTTP messages)

PHP

POZOR! Článek jsem napsal před více jak rokem, a tudíž už nemusí reflektovat můj nynější názor nebo může být zastaralý.

Velmi mne zasáhla přednáška PHP, PSR-7 a mírné immutability v mezích zákona na WebExpo 2017. Líbí se mi přístup, že existuje jeden HTTP požadavek, který může (díky standardizaci) zpracovat více aplikací/frameworků za sebou, ať už prostřednictvím middleware (jehož standard ještě není schválen) nebo jakkoli jinak. Podle mě to také velmi usnadňuje přepis aplikace do nového frameworku.

V rámky projektu Gephart jsem se proto rozhodl, že framework upravím tak, aby byl závislý na jakémkoli požadavku, který splňuje implementaci Psr\Http\Message\ServerRequestInterface a vrací odpověď, která implementuje Psr\Http\Message\ResponseInterface. Stává se tak mnohem více univerzálnějším.

Napsal jsem jednoduchou implementaci gephart/http a nová verze frameworku Gephart 0.5 jej již používá.

<?php

// Počítá se s nainstalovaným gephart/gephart
include_once __DIR__ . "/../vendor/autoload.php";

// Request, který implementuje Psr\Http\Message\ServerRequestInterface
$request = (new Gephart\Http\RequestFactory())->createFromGlobals();

// ... jakákoli další práce s požadavkem

$kernel = new Gephart\Framework\Kernel($request);

// Response, který implementuje Psr\Http\Message\ResponseInterface
$response = $kernel->run();

// ... jakákoli další práce s odpovědí

Znáte někoho, komu by článek mohl pomoct? Zasdílejte mu ho :)

Komentáře