이 글의 예시에서는 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 = [ '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
의 경우 app/Facades 폴더
에 또 다른 FacadeCreate Facade클래스<?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', ], ];
요약
laravel5의 Facade는 상대적으로 사용하기 쉽고, 기본적으로는 4와 다르지 않습니다.
이 글이 Laravel 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.
laravel5에서 서비스 프로바이더와 파사드를 생성하는 방법에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!