Maison > php教程 > PHP开发 > le corps du texte

Explication détaillée de la façon de créer un fournisseur de services et une façade dans laravel5

高洛峰
Libérer: 2016-12-23 17:24:17
original
1531 Les gens l'ont consulté

L'exemple de cet article décrit comment créer un fournisseur de services et une façade dans laravel5. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Laravel5 crée une façade, qui peut enregistrer un service en tant que façade, afin que vous n'ayez pas à vous soucier de l'utiliser. L'article utilise un exemple pour illustrer comment créer un fournisseur de services et une façade.

Objectif

J'espère créer une façade AjaxResponse afin qu'elle puisse être utilisée directement dans le contrôleur comme ceci :

class MechanicController extends Controller {
  public function getIndex()
  {
    \AjaxResponse::success();
  }
}
Copier après la connexion

Sa fonction est de standardiser le format renvoyé comme

{
  code: "0"
  result: {
  }
}
Copier après la connexion

Étapes

Créer une classe de service

dans l'application Créez une classe

<?php namespace App\Services;
class AjaxResponse {
  protected function ajaxResponse($code, $message, $data = null)
  {
    $out = [
      &#39;code&#39; => $code,
      &#39;message&#39; => $message,
    ];
    if ($data !== null) {
      $out[&#39;result&#39;] = $data;
    }
    return response()->json($out);
  }
  public function success($data = null)
  {
    $code = ResultCode::Success;
    return $this->ajaxResponse(0, &#39;&#39;, $data);
  }
  public function fail($message, $extra = [])
  {
    return $this->ajaxResponse(1, $message, $extra);
  }
}
Copier après la connexion

dans le dossier /Services

Cette AjaxResponse est une classe d'implémentation spécifique. Ensuite, nous créerons un fournisseur pour cette classe<🎜. >

Créer un fournisseur

Créer une classe dans le dossier app/Providers

<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AjaxResponseServiceProvider extends ServiceProvider {
  public function register()
  {
    $this->app->singleton(&#39;AjaxResponseService&#39;, function () {
      return new \App\Services\AjaxResponse();
    });
  }
}
Copier après la connexion

Ici, nous définissons le nom du service lors de l'inscription Pour AjaxResponseService

, définissons une autre façade

Créer une façade

Créer une classe

<?php namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class AjaxResponseFacade extends Facade {
  protected static function getFacadeAccessor() { return &#39;AjaxResponseService&#39;; }
}
Copier après la connexion

dans le dossier app/Facades

Modifier le fichier de configuration

D'accord, il ne nous reste plus qu'à monter ces deux choses dans app.php

<?php
return [
  ...
  &#39;providers&#39; => [
    ...
    &#39;App\Providers\RouteServiceProvider&#39;,
    &#39;App\Providers\AjaxResponseServiceProvider&#39;,
  ],
  &#39;aliases&#39; => [
    ...
    &#39;Validator&#39; => &#39;Illuminate\Support\Facades\Validator&#39;,
    &#39;View&#39;   => &#39;Illuminate\Support\Facades\View&#39;,
    &#39;AjaxResponse&#39; => &#39;App\Facades\AjaxResponseFacade&#39;,
  ],
];
Copier après la connexion

Résumé

Il est relativement facile d'utiliser la façade dans laravel5, fondamentalement pas différente de 4.

J'espère que cet article sera utile à la conception de programmes PHP basés sur le framework Laravel.

Pour des explications plus détaillées sur la façon de créer un fournisseur de services et une façade dans laravel5, veuillez faire attention au site Web PHP 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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal