Maison  >  Article  >  développement back-end  >  Explication détaillée de l'interface réactive fournie dans Laravel 5.5 pour répondre à l'exemple de requêtes_php

Explication détaillée de l'interface réactive fournie dans Laravel 5.5 pour répondre à l'exemple de requêtes_php

韦小宝
韦小宝original
2017-12-04 11:43:471546parcourir

Cet article vous présente principalement les informations pertinentes sur l'interface réactive fournie dans Laravel 5.5 pour répondre aux demandes. Le Laravel présenté dans l'article via un exemple de code est très détaillé et. est très utile. L'étude ou le travail de chacun a une certaine valeur de référence et d'apprentissage. Les amis qui en ont besoin peuvent suivre l'éditeur pour apprendre Laravel .

Préface

Laravel 5.5 sera également la prochaine version LTS (support à long terme). Cela signifie qu’il dispose de deux ans de correctifs et de trois ans de mises à jour de sécurité. Il en va de même pour Laravel 5.1, même si ses deux années de support de correction de bugs prendront fin cette année.

Laravel 5.5 ajoute un nouveau type de retour au routage : 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 une méthode nommée toResponse() qui convertit l'objet en 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]
  );
 }
}


Lors de l'utilisation de cet exemple d'objet dans le routage , vous pouvez faire ceci :


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


Dans le framework de Laravel, la classe Route peut désormais être préparé Cochez ce type (implémentant l'interface Responsable) lorsque vous répondez à un contenu :


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


Si vous le nommez dans AppHttpResponses Utilisez plusieurs types de réponses pour organiser le contenu de votre réponse sous l'espace . Vous pouvez vous référer à l'exemple ci-dessous. Cet exemple montre comment prendre en charge les publications (une collection 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'une application simple simulée. Scénario Exemple de base : renvoie une réponse JSON, mais vous espérez que la couche de réponse n'utilisera pas simplement l'implémentation intégrée pour JSONiser l'objet, mais effectuera un traitement de contenu. L'exemple ci-dessus suppose également que la classe AppHttpResponsesResponse peut fournir certaines 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.

Résumé

Ce qui précède est tout le contenu de cet article, j'espère qu'il pourra être utile à tout le monde.

Recommandations associées :

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

Bibliothèque de codes de vérification de Laravel

Explication détaillée des solutions inter-domaines dans le développement de Laravel

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