So implementieren Sie die reaktive Schnittstelle von Laravel 5.5

小云云
Freigeben: 2023-03-17 17:20:02
Original
1987 Leute haben es durchsucht

Laravel ist ein einfaches und elegantes PHP-Webentwicklungs-Framework (PHP Web Framework). Es kann Sie von unordentlichen Codes wie Nudeln befreien; es kann Ihnen helfen, eine perfekte Netzwerk-APP zu erstellen, und jede Codezeile kann prägnant und ausdrucksstark sein.

Laravel 5.5 fügt dem Routing einen neuen Rückgabetyp hinzu: Verantwortliche Schnittstelle ). Diese Schnittstelle ermöglicht die automatische Konvertierung von Objekten in eine Standard-HTTP-Antwortschnittstelle, wenn sie von einem Controller oder einer Abschlussroute zurückgegeben werden. Jedes Objekt, das die Responsable-Schnittstelle implementiert, muss a implementieren toResponse()-Methode, die das Objekt in ein HTTP-Antwortobjekt konvertiert.

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]
  );
 }
}
Nach dem Login kopieren

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

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

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

if ($response instanceof Responsable) {
 $response = $response->toResponse();
}
Nach dem Login kopieren

Wenn Sie zum Organisieren Ihres Antwortinhalts mehrere Antworttypen unter dem AppHttpResponses-Namespace verwenden, können Sie sich auf das folgende Beispiel beziehen. Dieses Beispiel zeigt, wie Beiträge unterstützt werden (Sammlung bestehend aus mehreren Instanzen):

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(),
   ];
  });
 }
}
Nach dem Login kopieren

Das Obige ist nur ein einfaches Beispiel zur Simulation eines einfachen Anwendungsszenarios: Geben Sie eine JSON-Antwort zurück, aber Sie hoffen, dass die Antwortschicht nicht einfach die eingebaute verwendet. in der Implementierung, um das Objekt in JSON zu konvertieren isierung, sondern um eine gewisse Inhaltsverarbeitung durchzuführen. Im obigen Beispiel wird auch davon ausgegangen, dass AppHttpResponsesResponse Diese Klasse kann einige Grundfunktionen bereitstellen. 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:

Wenn Sie weitere Details zu dieser Schnittstelle erfahren möchten, können Sie das Commit der entsprechenden Schnittstelle anzeigen Code im Projekt.

Der obige Inhalt ist eine detaillierte Erklärung der in Laravel 5.5 bereitgestellten reaktionsfähigen Schnittstelle zur Beantwortung von Anfragen. Ich hoffe, dass sie allen helfen kann.

Verwandte Empfehlungen:

Laravel5.5 neue Funktionen, Fehlerberichterstattung und grafische Einführung der Anzeige

Über benutzerfreundliche Fehlerberichterstattung in Laravel5. 5 Anzeige und ausführliche Erklärung

Detaillierte Einführung in die automatische Paketerkennung in Laravel5.5

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die reaktive Schnittstelle von Laravel 5.5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!