Laravel 5.5 が非常に重要なバージョンであることはわかっています。Laravel 5.5: Responsable インターフェイスのルーティングに新しい戻り値の型が追加されました。今日は事例を挙げて詳しくご紹介します。
例を見てください:
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 Framework では、Route クラスは、応答コンテンツ (Responsable インターフェイスの実装) タイプ:
if ($response instanceof Responsable) { $response = $response->toResponse(); }
複数の応答タイプを使用して、AppHttpResponses 名前空間 の下で応答コンテンツを整理する場合は、次の例を参照できます。この例では、Posts (複数のインスタンスのコレクション) をサポートする方法を示します。
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 応答を返しますが、応答層が単に構築されたものを使用しないことを望んでいます。 -in 実装はオブジェクトを JSON 化しますが、一部のコンテンツ処理を行います。上記の例では、AppHttpResponsesResponse クラスがいくつかの基本的な機能を提供できることも前提としています。もちろん、コントローラーでそのような変換を直接行う代わりに、応答レイヤーに何らかの変換コード (Fractal と同様) を含めることもできます。
上記の例で PostIndexResponse クラスと連携するコントローラー コードは次のようになります:
これらの事例を読んだ後は、メソッドを習得したと思います。さらに興味深い内容については、他の関連記事に注目してください。 PHP中国語ウェブサイトで!
関連書籍:
php再帰的および非再帰実装のための二分探索のサンプルコード
以上がLaravel 5.5の対応するインターフェースを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。