>php教程 >PHP开发 >laravel5에서 서비스 제공자와 Facade를 생성하는 방법에 대한 자세한 설명

laravel5에서 서비스 제공자와 Facade를 생성하는 방법에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-23 17:24:171565검색

이 글의 예시에서는 laravel5에서 서비스 제공자와 파사드를 생성하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

Laravel5는 서비스를 Facade로 등록할 수 있는 Facade를 생성하므로 굳이 사용하지 않아도 됩니다. 이 기사에서는 예제를 사용하여 서비스 공급자 및 외관을 만드는 방법을 보여줍니다.

목표

다음과 같이 컨트롤러에서 직접 사용할 수 있도록 AjaxResponse 파사드를 생성했으면 좋겠습니다.

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

그 기능은 반환된 형식을

{
  code: "0"
  result: {
  }
}

단계

서비스 클래스 생성

으로 표준화하는 것입니다. 앱에서 /Services 폴더에

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

클래스를 만듭니다.

이 AjaxResponse는 특정 구현 클래스입니다. 다음으로 이 클래스에 대한 공급자를 만듭니다

공급자 생성

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

여기서 등록할 때 서비스 이름을 정의합니다. AjaxResponseService

의 경우 app/Facades 폴더

에 또 다른 Facade

Create Facade

클래스
<?php namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class AjaxResponseFacade extends Facade {
  protected static function getFacadeAccessor() { return &#39;AjaxResponseService&#39;; }
}

를 정의해 보겠습니다.

구성 파일 수정

자, 이제 이 두 가지를 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;,
  ],
];

요약

laravel5의 Facade는 상대적으로 사용하기 쉽고, 기본적으로는 4와 다르지 않습니다.

이 글이 Laravel 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.

laravel5에서 서비스 프로바이더와 파사드를 생성하는 방법에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.