Laravel 5.5可相應的介面如何使用?

php中世界最好的语言
發布: 2023-03-18 06:56:01
原創
1866 人瀏覽過

我們知道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 框架中, Route 類別如今可以在準備回應內容時檢查這種(實作了Responsable 介面的)類型:

if ($response instanceof Responsable) {
 $response = $response->toResponse();
}
登入後複製


#假如你在App\Http\Responses 命名空間下用多個回應類型來組織你的回應內容,可以參考下面這個範例。這個範例示範如何支援Posts (多個實例組成的Collection):

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中文網其它相關文章!

相關閱讀:

python實作二分查找與快速排序實例詳解

php 遞迴與非遞迴實作的二分查找實例程式碼

詳解php 二分查找

#

以上是Laravel 5.5可相應的介面如何使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板