Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich die entsprechende Schnittstelle von Laravel 5.5?

Wie verwende ich die entsprechende Schnittstelle von Laravel 5.5?

php中世界最好的语言
php中世界最好的语言Original
2017-12-20 14:18:561828Durchsuche

Wir wissen, dass Laravel 5.5 eine sehr wichtige Version ist. Dem Routing von Laravel 5.5 wurde ein neuer Rückgabetyp hinzugefügt: Responsable-Schnittstelle. Heute werde ich Ihnen einen Fall vorstellen, um ihn im Detail vorzustellen.

Sehen Sie sich das Beispiel an:

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]
  );
 }
}


Wenn Sie dieses Beispielobjekt im Routing verwenden, können Sie Folgendes tun:

Route::get('/hello', function() {
 return new ExampleObject(request('name'));
});


Im Laravel--Framework kann die Route-Klasse jetzt bei der Vorbereitung des Antwortinhalts nach diesem Typ suchen (Implementierung der Responsable-Schnittstelle):

if ($response instanceof Responsable) {
 $response = $response->toResponse();
}


Wenn Sie mehrere Antworttypen verwenden, um Ihren Antwortinhalt im AppHttpResponses Namespace zu organisieren, können Sie sich auf das folgende Beispiel beziehen. Dieses Beispiel zeigt, wie Posts (eine Sammlung mehrerer Instanzen) unterstützt werden:

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(),
   ];
  });
 }
}

Das Obige ist nur ein einfaches Beispiel zur Simulation eines einfachen Anwendungsszenarios: Geben Sie eine JSON-Antwort zurück, aber Sie möchten, dass die Antwortebene dies tut nicht einfach verwenden Die integrierte Implementierung konvertiert das Objekt in JSON, führt jedoch einige Inhaltsverarbeitungen durch. Im obigen Beispiel wird außerdem davon ausgegangen, dass die AppHttpResponsesResponse-Klasse einige grundlegende Funktionen bereitstellen kann. Natürlich kann die Antwortschicht auch einen Konvertierungscode enthalten (ähnlich wie bei Fractal), anstatt eine solche Konvertierung direkt im Controller durchzuführen.

Der Controller-Code, der im obigen Beispiel mit der PostIndexResponse-Klasse zusammenarbeitet, ähnelt dem folgenden:


Ich glaube, dass Sie die Methode beherrschen, nachdem Sie diese gelesen haben Fälle, mehr Bitte beachten Sie andere verwandte Artikel auf der chinesischen PHP-Website!

Verwandte Lektüre:

Detaillierte Erläuterung der Beispiele für binäre Suche und schnelle Sortierung in Python

Beispielcode für die binäre PHP-Suche für rekursive und nicht -rekursive Implementierungen

Detaillierte Erklärung der PHP-Binärsuche

Das obige ist der detaillierte Inhalt vonWie verwende ich die entsprechende Schnittstelle von Laravel 5.5?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn