Slim Framework の今後の変更点

日中の仕事がようやく落ち着いてきたので、Slim Framework の作業を再開しました。次の安定版リリースで導入されるいくつかの新機能と変更点を以下に示します。これらの変更点は、現在 develop ブランチで利用可能ですので、アプリケーションの更新を始めることができます。

環境

  • HTTP_ プレフィックスを含む HTTP ヘッダーは、Environment オブジェクトで HTTP_ プレフィックスを保持するようになりました。

リクエスト

  • インスタンス化時に Environment オブジェクトから HTTP ヘッダーが解析され、Request の public な headers プロパティで利用できるようになります。
  • インスタンス化時に Environment オブジェクトから Cookie が解析され、Request の public な cookies プロパティで利用できるようになります。
  • Request の public な headers および cookies プロパティは、新しい \Slim\Helper\Set インターフェースを使用します。

カスタムミドルウェアを使用して Request オブジェクトのヘッダーまたは Cookie を更新する場合は、Environment オブジェクトではなく、Request オブジェクトの cookies または headers プロパティで行う必要があります。

次の Request オブジェクトのメソッドは、次のメジャーポイントリリースで非推奨になります。

  • cookies()
  • headers()

レスポンス

  • HTTP ヘッダーは、Response の public な headers プロパティに設定されるようになりました。
  • HTTP Cookie は、Response の public な cookies プロパティに設定されるようになりました。
  • Response の public な headers および cookies プロパティは、\Slim\Helper\Set インターフェースを使用します。
  • status() の代わりに setStatus(int $status) または getStatus() メソッドを使用してください。
  • headers() または header() の代わりに、public な headers プロパティを直接使用してください。
  • body() の代わりに getBody() または setBody() メソッドを使用してください。
  • length() の代わりに getLength() メソッドを使用してください。
  • Response オブジェクト自体ではなく、headers または cookies プロパティを反復処理してください。
  • 新しい \Slim\Helper\Set インターフェースにより、Response オブジェクトの Cookie は、Slim アプリケーションのライフサイクルの最後(最終ミドルウェアの実行後、HTTP レスポンスがクライアントに返される直前)まで、生の HTTP ヘッダーにシリアル化されません。これにより、カスタムミドルウェアは、よりシンプルな \Slim\Helper\Set インターフェースを使用して Response Cookie を操作でき、生の HTTP Set-Cookie ヘッダーを操作する必要がなくなります。

次の Response オブジェクトのメソッドとインターフェースは、次のメジャーポイントリリースで非推奨になります。

  • headers()
  • header()
  • length()
  • body()
  • status()
  • \ArrayAccess
  • \Countable
  • \IteratorAggregate

\Slim\Helper\Set

次の安定版リリースでは、\Slim\Helper\Set インターフェースが導入されます。このインターフェースは、Slim アプリケーションの多くのコレクション(Cookie、ヘッダーなど)で使用されます。このインターフェースは、Slim の多くのメソッドとインターフェースを統一し、簡素化するのに役立ちます。\Slim\Helper\Set インターフェースは

__construct(array $items);
set(string $key, mixed $value);
get(string $key, mixed $defaultValue);
add(array $items);
all();
keys();
has(string $key);
remove(string $key);

このインターフェースは、\ArrayAccess、\Countable、および \IteratorAggregate を実装します。

旧メソッド

上記で非推奨となるすべてのメソッドは、次のメジャーポイントリリースまで動作します。

ご質問は?

ご質問がありましたら、@slimphp までツイートするか、Slim Framework フォーラム に投稿してください。