この記事の例では、laravel5 でサービスプロバイダーとファサードを作成する方法を説明します。参考までに皆さんと共有してください。詳細は次のとおりです:
laravel5 はサービスをファサードとして登録できるファサードを作成するため、わざわざ使用する必要はありません。この記事では、例を使用してサービス プロバイダーとファサードを作成する方法を説明します。ターゲット
AjaxResponse のファサードを作成して、コントローラーで直接使用できるようにできればと思います:
class MechanicController extends Controller { public function getIndex() { \AjaxResponse::success(); } }E
その役割は、
{ code: "0" result: { } }E
として返される形式を規制することです。作成
作成
サービスクラス
app/Services フォルダーにクラス
<?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); } }
を作成します
次に、このクラスのプロバイダーを作成する必要があります
プロバイダーを作成します
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(); }); } }
を作成します
ここでは登録時にサービス名をAjaxResponseServiceとして定義しました
次にファサードを定義します
ファサードを作成します
app/Facadesフォルダーにクラス
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class AjaxResponseFacade extends Facade { protected static function getFacadeAccessor() { return 'AjaxResponseService'; } }
を作成します
設定ファイルを変更します
さて、あとは app.php でこれら 2 つをマウントするだけです
<?php return [ ... 'providers' => [ ... 'App\Providers\RouteServiceProvider', 'App\Providers\AjaxResponseServiceProvider', ], 'aliases' => [ ... 'Validator' => 'Illuminate\Support\Facades\Validator', 'View' => 'Illuminate\Support\Facades\View', 'AjaxResponse' => 'App\Facades\AjaxResponseFacade', ], ];
概要
laravel5 でファサードを使用するのは比較的簡単で、基本的には上記と違いはありません4.
🎜この記事が、皆様のLaravelフレームワークをベースにしたPHPプログラム設計のお役に立てれば幸いです。 🎜🎜laravel5 でサービスプロバイダーとファサードを作成する方法の詳細な説明については、PHP 中国語 Web サイトに注目してください。 🎜