ホームページ >バックエンド開発 >PHPチュートリアル >laravel5でサービスプロバイダーとファサードを作成する方法

laravel5でサービスプロバイダーとファサードを作成する方法

WBOY
WBOYオリジナル
2016-06-20 12:33:341328ブラウズ

Laravel5ではサービスをファサードとして登録できるファサードを作成しているので、利用する際にわざわざ利用する必要がありません。この記事では、例を使用してサービス プロバイダーとファサードを作成する方法を説明します。

目標

次のようにコントローラーで直接使用できるように AjaxResponse ファサードを作成できればと思います。

class MechanicController extends Controller {        public function getIndex()    {        \AjaxResponse::success();    }}

その機能は、返される形式を

手順
{    code: "0"    result: {    }}
Service クラスを作成します

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);    }}
この AjaxResponse は特定の実装クラスです。 次に、このクラスのプロバイダーを作成します。

プロバイダーを作成します

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 として定義します

次に、別のファサードを定義します

ファサードを作成します

アプリ/ファサード フォルダーにクラスを作成します

<?php namespace App\Facades;use Illuminate\Support\Facades\Facade;class AjaxResponseFacade extends Facade {    protected static function getFacadeAccessor() { return 'AjaxResponseService'; }}
構成ファイルを変更します

それでは、次はこれら 2 つを app.php にマウントするだけです。

概要
<?phpreturn [    ...    'providers' => [        ...        'App\Providers\RouteServiceProvider',        'App\Providers\AjaxResponseServiceProvider',    ],    'aliases' => [        ...        'Validator' => 'Illuminate\Support\Facades\Validator',        'View'      => 'Illuminate\Support\Facades\View',        'AjaxResponse' => 'App\Facades\AjaxResponseFacade',    ],];
laravel5 でファサードを使用するのは比較的簡単で、基本的には 4 と変わりません。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。