Comment utiliser l'interface correspondante de Laravel 5.5 ?

php中世界最好的语言
Libérer: 2023-03-18 06:56:01
original
1827 Les gens l'ont consulté

Nous savons que Laravel 5.5 est une version très importante. Un nouveau type de retour a été ajouté au routage de Laravel 5.5 : Interface Responsable. Aujourd'hui, je vais vous présenter un cas pour le présenter en détail.

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]
  );
 }
}
Copier après la connexion


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

Route::get('/hello', function() {
 return new ExampleObject(request('name'));
});
Copier après la connexion


Dans le framework Laravel , la classe Route peut désormais vérifier 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();
}
Copier après la connexion


Si vous utilisez plusieurs types de réponses pour organiser le contenu de votre réponse sous l'espace de noms AppHttpResponses , vous pouvez vous référer à l'exemple suivant. 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(),
   ];
  });
 }
}
Copier après la connexion

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 souhaitez que la couche de réponse pas simplement utiliser L'implémentation intégrée convertit l'objet en JSON, mais effectue un certain traitement du 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 :


Je pense que vous maîtrisez la méthode après avoir lu ces lignes. cas, plus Veuillez prêter attention aux autres articles connexes sur le site Web php chinois !

Lecture connexe :

Explication détaillée de la recherche binaire et exemples de tri rapide en python

Exemple de code de recherche binaire PHP pour récursif et non -implémentations récursives

Explication détaillée de la recherche binaire PHP

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!