laravel 5 서비스 provider 와 facade 를 만 드 는 방법 에 대한 자세 한 설명

이 사례 는 laravel 5 가 service provider 와 facade 를 만 드 는 방법 을 설명 한다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
laravel 5 는 facade 를 만 들 고 특정한 service 를 외관 에 등록 할 수 있 습 니 다.그러면 사용 할 때 귀 찮 게 use 할 필요 가 없습니다.글 은 하나의 예 로 service provider 와 facade 를 어떻게 만 드 는 지 설명 한다.
목표.
저 는 Ajax Response 의 facade 를 만 들 고 싶 습 니 다.이렇게 하면 contrller 에서 직접 이렇게 사용 할 수 있 습 니 다.

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

그것 의 역할 은 되 돌아 오 는 형식 을 규범화 하 는 것 이다.

{
  code: "0"
  result: {
  }
}

순서
서비스 클래스 만 들 기
app/Service 폴 더 에 클래스 만 들 기

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

이 Ajax Response 는 구체 적 인 실현 클래스 입 니 다.다음은 이 클래스 를 위해 provider 가 되 겠 습 니 다.
provider 만 들 기
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();
    });
  }
}

여기 서 저희 가 register 에서 이 서비스 이름 을 Ajax Response Service 라 고 정 의 했 습 니 다.
다음은 저희 가 또 하나의 얼굴 facade 를 정의 하 겠 습 니 다.
facade 만 들 기
app/Facades 폴 더 에 클래스 만 들 기

<?php namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class AjaxResponseFacade extends Facade {
  protected static function getFacadeAccessor() { return 'AjaxResponseService'; }
}

프로필 수정
자,다음은 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',
  ],
];

총결산
laravel 5 에서 facade 를 사용 하 는 것 은 비교적 쉬 우 며,기본적으로 4 와 별 차이 가 없다.
더 많은 Laravel 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,,,및,
본 고 는 Laravel 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기