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 = [ 'code' => $code, 'message' => $message, ]; if ($data !== null) { $out['result'] = $data; } return response()->json($out); } public function success($data = null) { $code = ResultCode::Success; return $this->ajaxResponse(0, '', $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 fournisseurCré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('AjaxResponseService', function () { return new \App\Services\AjaxResponse(); }); } }
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class AjaxResponseFacade extends Facade { protected static function getFacadeAccessor() { return 'AjaxResponseService'; } }
dans le dossier app/Facades
Modifier le fichier de configurationD'accord, il ne nous reste plus qu'à monter ces deux choses dans app.php<?php return [ ... 'providers' => [ ... 'App\Providers\RouteServiceProvider', 'App\Providers\AjaxResponseServiceProvider', ], 'aliases' => [ ... 'Validator' => 'Illuminate\Support\Facades\Validator', 'View' => 'Illuminate\Support\Facades\View', 'AjaxResponse' => 'App\Facades\AjaxResponseFacade', ], ];