Maison  >  Article  >  développement back-end  >  Comment implémenter l'interface réactive de Laravel 5.5

Comment implémenter l'interface réactive de Laravel 5.5

小云云
小云云original
2018-05-25 15:27:141999parcourir

Laravel est un framework de développement Web PHP simple et élégant (PHP Web Framework). Il peut vous libérer des codes désordonnés comme les nouilles ; il peut vous aider à créer une application réseau parfaite, et chaque ligne de code peut être concise et expressive.

Laravel 5.5 ajoute un nouveau type de retour au routage : Interface Responsable ). Cette interface permet aux objets d'être automatiquement convertis en une interface de réponse HTTP standard lorsqu'ils sont renvoyés par un contrôleur ou une route de fermeture. Tout objet qui implémente l'interface Responsable doit implémenter un toResponse(), qui convertit l'objet en un objet de réponse HTTP.

Regardez l'exemple :

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

Lorsque vous utilisez cet ExempleObject dans le routage, vous pouvez faire ceci :

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

Dans le framework Laravel, la classe Route peut now Vérifiez ce type (implémentant l'interface Responsable) lors de la préparation du contenu de la réponse :

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

Si vous utilisez plusieurs types de réponse sous l'espace de noms AppHttpResponses pour organiser le contenu de votre réponse, vous pouvez vous référer à l'exemple suivant. Cet exemple montre comment prendre en charge les publications (Collection composée de plusieurs instances) :

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

Ce qui précède n'est qu'un exemple de base pour simuler un scénario d'application simple : renvoie une réponse JSON, mais vous espérez que la couche de réponse n'utilise pas simplement le en cours d'implémentation pour convertir l'objet en JSON isation, mais pour effectuer un traitement de contenu. L'exemple ci-dessus suppose également que AppHttpResponsesResponse Cette classe peut fournir quelques fonctions de base. Bien entendu, la couche de réponse peut également contenir du code de conversion (similaire à Fractal) au lieu d'effectuer une telle conversion directement dans le contrôleur.

Le code du contrôleur qui coopère avec la classe PostIndexResponse dans l'exemple ci-dessus est similaire au suivant :

Si vous souhaitez en savoir plus sur cette interface, vous pouvez consulter le commit du correspondant code dans le projet.

Le contenu ci-dessus est une explication détaillée de l'interface réactive fournie dans Laravel 5.5 pour répondre aux demandes. J'espère que cela pourra aider tout le monde.

Recommandations associées :

Nouvelles fonctionnalités de Laravel5.5, rapport d'erreurs et introduction graphique de l'affichage

À propos du rapport d'erreurs convivial dans Laravel5. 5 Affichage et explication détaillée

Introduction détaillée de Package Auto Discovery dans Laravel5.5

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn