Slim 3.0.0 リリース!
一連のリリース候補版を経て、Slim 3 の最初の安定版である 3.0.0 をリリースできることを嬉しく思います。
新機能
Slim 3 は、フレームワークのすべての部分が更新されたメジャーアップデートです。以下に主なものを紹介します。
依存性注入
\Slim\App
クラスは、container-interop を実装する依存性注入コンテナを構成します。デフォルトでは Pimple を同梱していますが、Container Interoperability インターフェースをサポートしているため、お好みのDIコンテナに置き換えることができます。DIコンテナにより、サードパーティ製コンポーネントをSlimアプリケーションに簡単に注入したり、リクエストオブジェクトやレスポンスオブジェクトなど、Slimの内部オブジェクトをオーバーライドしたりできます。
PSR-7 サポート
SlimのHTTPリクエストとレスポンスの抽象化は、PSR-7 をサポートしています。つまり、そのインターフェースは以前のリリースとは大きく異なります。過去には、各Slimアプリケーションには、アプリケーション全体で参照渡しされる1つのリクエストオブジェクトと1つのレスポンスオブジェクトがありました。
しかし、バージョン3では、リクエストオブジェクトとレスポンスオブジェクトは値オブジェクトとして扱われます。各ミドルウェア層とアプリケーションルートは、最新のリクエストオブジェクトとレスポンスオブジェクトを引数として受け取ります。各ミドルウェア層とルートコールバックは、更新されたHTTPレスポンスオブジェクトを返す責任があります。
HTTPリクエストとレスポンスオブジェクトもイミュータブルです。指定された変更を加えた新しいリクエストまたはレスポンスオブジェクトを作成して返すには、適切な withStatus()
、withHeader()
、withBody()
などのリクエストおよびレスポンスオブジェクトのメソッドを使用する必要があります。新しいインターフェースの詳細については、PSR-7ドキュメント(https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-7-http-message.md)をご覧ください。
これにより、サードパーティ製ミドルウェアをSlim Frameworkで使用することも可能になります。たとえば、別のフレームワーク用に設計されたPSR-7ミドルウェアを見つけた場合、PSR-7インターフェースを使用しているため、そのミドルウェアはSlimとも互換性があります。
SlimのPSR-7の変更は複雑に聞こえるかもしれませんが、実際には非常にシンプルです。PSR-7の詳細については、以下をご覧ください。
- http://www.php-fig.org/psr/psr-7/
- https://mwop.net/blog/2015-01-26-psr-7-by-example.html
- https://mwop.net/blog/2015-01-08-on-http-middleware-and-psr-7.html
インターフェースにコーディング
3.0 リリースでは、(ほとんど)すべての内部アプリメソッドが、具体的なクラスの実装ではなくインターフェースを期待するようにコーディングされています。つまり、必要に応じてSlimアプリの依存関係に対して独自の実装を簡単に提供でき、DIコンテナサービスを使用して依存関係を注入またはオーバーライドできます。
ルートコールバックバインディング
クロージャをルートコールバックルーチンとして使用する場合、クロージャはコンテナインスタンスにバインドされます。これは、$this
キーワードを介してクロージャの内部からDIコンテナインスタンスにアクセスできることを意味します。
<?php
$app = new \Slim\App();
$app->get('/hello/{name}', function ($request, $response, $args) {
$url = $this->get('router')->pathFor('hello', ['name' => 'Josh']);
return $response;
})->setName('hello');
よりシンプルなコードベース
フレームワークのコードベースははるかにシンプルになりました。以前は、アプリケーションクラスにはレンダリングやレスポンスヘッダーに関する多くのメソッドが含まれていました。これらは他の適切なクラスに移行されたため、現在はそうではありません。たとえば、contentType()
メソッドと status()
メソッドは削除されており、HTTPレスポンスを変更するにはレスポンスオブジェクトのメソッドを使用する必要があります。Slimには、ビューオブジェクトやロガーオブジェクトは同梱されなくなり、ニーズに最適なコンポーネントを選択できます。もちろん、Twig テンプレートコンポーネントとの統合は、Twig-View を介して継続的に提供しており、PHP-View を介したPHPビュー スクリプト統合も提供しています。
はじめに
開始するには、インストール手順に従うか、スケルトンアプリケーションから開始できます。
完全なドキュメントも利用できます。
ありがとうございます
このリリースは、Slim 3のテストと貴重なフィードバックを提供してくれたコミュニティのサポートなしには実現できませんでした。ありがとうございます!