PSR-7
PSR7 HTTP message interface1を使ってサーバーサイドリクエストの情報を取得したり、BEAR.SundayアプリケーションをPSR7ミドルウエアとして実行する事ができます。
HTTPリクエスト
PHPには$_SERVER
や$_COOKIE
などのスーパーグローバルがありますが、
それらの代わりにPSR7 HTTP message interfaceを使ってサーバーサイドリクエストの情報($_COOKIE
, $_GET
, $_POST
, $_FILES
, $_SERVER
)を受け取ることができます。
ServerRequest (サーバーリクエスト全般)
class Index extends ResourceObject
{
public function __construct(ServerRequestInterface $serverRequest)
{
// retrieve cookies
$cookie = $serverRequest->getCookieParams(); // $_COOKIE
}
}
アップロードファイル
use Psr\Http\Message\UploadedFileInterface;
use Ray\HttpMessage\Annotation\UploadFiles;
class Index extends ResourceObject
{
/**
* @UploadFiles
*/
public function __construct(array $files)
{
// retrieve file name
$file = $files['my-form']['details']['avatar'][0]
/* @var UploadedFileInterface $file */
$name = $file->getClientFilename(); // my-avatar3.png
}
}
URI
use Psr\Http\Message\UriInterface;
class Index extends ResourceObject
{
public function __construct(UriInterface $uri)
{
// retrieve host name
$host = $uri->getHost();
}
}
PSR7ミドルウエア
既存のBEAR.Sundayアプリケーションは特別な変更無しにPSR-7ミドルウエアとして動作させることができます。
以下のコマンドでbear/middleware
を追加して、ミドルウエアとして動作させるためのbootstrapスクリプトに置き換えます。
composer require bear/middleware
cp vendor/bear/middleware/bootstrap/bootstrap.php bootstrap/bootstrap.php
次にスクリプトの__PACKAGE__\__VENDOR__
をアプリケーションの名前に変更すれば完了です。
php -S 127.0.0.1:8080 -t public
ストリーム
ミドルウエアに対応したBEAR.Sundayのリソースはストリームの出力に対応しています。
HTTP出力はStreamTransfer
が標準です。詳しくはストリーム出力をご覧ください。
新規プロジェクト
新規でPSR-7のプロジェクトを始めることもできます。
composer create-project bear/project my-awesome-project
cd my-awesome-project/
php -S 127.0.0.1:8080 -t public