Slim 3 ベータ版 1

Slim 3のベータ版1をリリースし、3.0の最初の安定版リリースに向けた取り組みを開始しました。新しいドキュメントの作成も開始しました。

Slim 3を安定して使いやすいフレームワークにすることを目指しています。発見された問題をすべて報告してください。また、関数シグネチャを変更する必要がないことを願っていますが、3.0の安定版がリリースされるまでは下位互換性を保証するものではありません。

開始するには、インストール手順に従うか、Rob Allenスケルトンアプリケーションを使用できます。

新機能

Slim 3は、フレームワークのすべての部分が更新されたメジャーアップデートです。主なハイライトは以下の通りです。

依存性注入

\Slim\Appクラスは、container-interopを実装する依存性注入コンテナを構成します。デフォルトではPimpleが提供されますが、独自のDIコンテナと交換することも可能です。DIコンテナにより、Slimアプリケーションにサードパーティのコンポーネントを簡単に注入したり、リクエストやレスポンスオブジェクトなどのSlimの内部オブジェクトをオーバーライドしたりできます。

PSR-7サポート

SlimのHTTPリクエストとレスポンスの抽象化はPSR-7をサポートしています。これは、それらのインターフェースが以前のリリースと大きく異なることを意味します。以前は、各Slimアプリケーションには、アプリケーション全体で参照渡しされる1つのリクエストオブジェクトと1つのレスポンスオブジェクトがありました。

しかし、バージョン3では、リクエストオブジェクトとレスポンスオブジェクトは値オブジェクトとして扱われます。各ミドルウェア層とアプリケーションルートは、最新のHTTPリクエストオブジェクトとレスポンスオブジェクトを引数として受け取ります。各ミドルウェア層とルートコールバックは、更新されたHTTPレスポンスオブジェクトを返す責任があります。

HTTPリクエストとレスポンスオブジェクトも不変です。指定された変更を加えた新しいリクエストまたはレスポンスオブジェクトを作成して返すには、適切なwithStatus()withHeader()withBody()などのリクエストとレスポンスオブジェクトのメソッドを使用する必要があります。新しいインターフェースの詳細については、PSR-7のドキュメントhttps://github.com/php-fig/fig-standards/blob/master/proposed/http-message.mdを参照してください。

これにより、Slim Frameworkでサードパーティのミドルウェアを使用することも可能になります。たとえば、別のフレームワーク用に設計されたPSR-7ミドルウェアを見つけるかもしれません。しかし、PSR-7インターフェースを使用することにより、そのミドルウェアはSlimとも互換性があります。

SlimのPSR-7の変更は複雑に聞こえるかもしれませんが、実際は非常に簡単です。PSR-7の詳細については、以下を参照してください。

インターフェースへのコーディング

3.0リリースは(ほとんど)内部のすべてのアプリケーションメソッドが、具体的なクラスの実装ではなくインターフェースを期待するようにコーディングされています。つまり、必要に応じてSlimアプリケーションの依存関係の独自のインプリメンテーションを提供することが容易になり、DIコンテナサービスを使用して依存関係を注入またはオーバーライドできます。

ルートコールバックバインディング

クロージャをルートコールバックルーチンとして使用する場合、クロージャは\Slim\Appインスタンスにバインドされます。つまり、$thisキーワードを使用して、クロージャの内側からアプリケーションインスタンスにアクセスできます。

<?php
$app = new \Slim\App();
$app->get('/hello/{name}', function ($request, $response, $args) {
    $url = $this->router->pathFor('hello', ['name' => 'Josh']);

    return $response;
})->setName('hello');

簡素化されたコードベース

フレームワークのコードベースははるかに簡素化されています。以前は、\Slim\Appクラスには、レンダリングまたはレスポンスヘッダーに関する多くのメソッドが含まれていました。これらは適切な他のクラスに移行されたため、これはもはや当てはまりません。\Slim\App::contentType()\Slim\App::status()は削除され、HTTPレスポンスを変更するにはレスポンスオブジェクトのメソッドを使用する必要があります。Slimはビューやロガーオブジェクトを同梱しなくなり、ニーズに最適なコンポーネントを選択できます。もちろん、Twigテンプレートコンポーネントとの統合はTwig-Viewを介して引き続き提供しています。

今後の予定

Slim 3ベータ版1には、バージョン3.0で想定する主要な変更点がすべて含まれていると考えているため、現在は安定性とバグ修正に集中しています。準備が整い次第、3.0の最初の安定版をリリースします。