この記事では、Laravel 5.5 で提供されているリクエストに応答するためのレスポンシブインターフェイスに関する情報を中心に紹介します。サンプルコードを通じて詳細に紹介しています。あらゆる人の学習や仕事に一定の参考学習価値があります。お友達の皆さん、ぜひ編集者をフォローして一緒に学んでください。
まえがき
Laravel 5.5 は次の LTS (長期サポート) バージョンでもあります。つまり、2 年間の修正プログラムと 3 年間のセキュリティ更新プログラムが提供されます。 Laravel 5.1 についても同様ですが、2 年間のバグ修正サポートは今年終了します。
Laravel 5.5 では、ルーティングに新しい戻り値の型である Responsable インターフェイスが追加されました。このインターフェイスにより、オブジェクトがコントローラーまたはクロージャ ルートから返されたときに、標準の HTTP 応答インターフェイスに自動的に変換されます。 Responsable インターフェイスを実装するオブジェクトは、オブジェクトを HTTP 応答オブジェクトに変換する toResponse()
という名前のメソッドを実装する必要があります。
例を見てください:
use Illuminate\Contracts\Support\Responsable; class ExampleObject implements Responsable { public function __construct($name = null) { $this->name = $name ?? 'Teapot'; } public function status() { switch(strtolower($this->name)) { case 'teapot': return 418; default: return 200; } } public function toResponse() { return response( "Hello {$this->name}", $this->status(), ['X-Person' => $this->name] ); } }
この ExampleObject をルーティングで使用する場合、次のことができます:
Route::get('/hello', function() { return new ExampleObject(request('name')); });
Laravel フレームワークでは、Route クラスは応答コンテンツを準備するときにこのタイプ (Responsable インターフェイスを実装する) をチェックできるようになりました。
if ($response instanceof Responsable) { $response = $response->toResponse(); }
複数の応答タイプを使用して応答コンテンツを App\Http\Responses 名前空間で整理する場合は、次の例を参照できます。この例では、Post (複数のインスタンスのコレクション) をサポートする方法を示します。
posts = $posts; } public function toResponse() { return response()->json($this->transformPosts()); } protected function transformPosts() { return $this->posts->map(function ($post) { return [ 'title' => $post->title, 'description' => $post->description, 'body' => $post->body, 'published_date' => $post->published_at->toIso8601String(), 'created' => $post->created_at->toIso8601String(), ]; }); } }
上記は、単純なアプリケーション シナリオをシミュレートするための基本的な例にすぎません。 JSON 応答 ですが、応答層が単に組み込み実装を使用してオブジェクトを JSON 化するのではなく、何らかのコンテンツ処理を実行することを望みます。また、上記の例では、App\Http\Responses\Response クラスがいくつかの基本的な機能を提供できることを前提としています。もちろん、コントローラーで直接このような変換を行う代わりに、応答層に何らかの変換コード (Fractal と同様) を含めることもできます。
上記の例で PostIndexResponse クラスと連携するコントローラー コードは次のようになります。
このインターフェイスの詳細を知りたい場合は、関連するコミットのコミットを参照してください。
概要
興味があるかもしれない記事:
#phpのzip in操作 パッケージを解凍せずに圧縮パッケージ内の画像を表示する方法の解説
##phpのサインイン実装方法の解析例の詳細説明function
Linux での php-fpm プロセスが多すぎることによって引き起こされるメモリ枯渇の問題を解決するための詳細な説明
以上がLaravel 5.5で提供されるリクエストに応答するためのレスポンシブインターフェースについて詳しく説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。