Maison >php教程 >PHP开发 >Explication détaillée de la façon de créer un fournisseur de services et une façade dans laravel5

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

高洛峰
高洛峰original
2016-12-23 17:24:171576parcourir

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

Sa fonction est de standardiser le format renvoyé comme

{
  code: "0"
  result: {
  }
}

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

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

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

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;,
  ],
];

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 !

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