[라라벨] Facade 작성의 흐름
이번 주제
Facade의 작성 방법을 복습이 나면 메모로서 써 남깁니다.
버전
Laravel6.8
거친 흐름
Laravel6.8
거친 흐름
수업 만들기
클래스를 배치하는 디렉토리 만들기
$ mkdir app/Services
app/Services/
이하에 GreetingService.php
를 작성해, 클래스와 적당한 메소드를 정의.<?php
namespace App\Services;
class GreetingService {
public function hello()
{
return 'hello';
}
}
서비스 제공자를 통해 클래스를 서비스 컨테이너에 등록
자체 서비스 공급자 만들기
$ php artisan make:provider GreetingServiceProvider
위의 명령으로
app/Providers/
아래에 작성된 GreetingServiceProvider.php
를 다음과 같이 편집.<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class GreetingServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->app->bind('greeting', 'App\Services\GreetingService'); // 追記
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
서비스 제공업체 등록
config\app.php
를 열고 다음과 같이 추가합니다. 'providers' => [
// 略
/*
* 自作のサービスプロバイダー
*/
App\Providers\GreetingServiceProvider::class, // 追記
],
서비스 컨테이너에 등록되었는지 확인
서비스 컨테이너의 실체는
Illuminate\Foundation\Applicationクラス
Illuminate\Foundation\Application 클래스는, 헬퍼 함수 app()
로 호출할 수 있으므로 이하와 같이 해 내용을 확인.dd(app());
여러가지 나온 가운데
bindings
를 열고,게다가 여러가지 나온 가운데, 방금 등록한
greeting
가 있으면 OK.Facade 만들기
Facade를 배치하는 디렉토리를 작성.
$ mkdir app/Facades
app\Facades
아래에 Greeting.php
를 작성해 이하와 같이 편집.<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Greeting extends Facade
{
protected static function getFacadeAccessor()
{
return 'greeting'; // サービスコンテナに登録した名前。
}
}
Facade의 별칭 등록
config\app.php
를 열고 다음과 같이 추가합니다. 'aliases' => [
// 略
/*
* 自作のFacade
*/
'Greeting' => App\Facades\Greeting::class, // 追記
],
Facade 호출
Greeting::hello(); // 結果 hello
컨트롤러 등의 namespace 중에서 사용하려고 하는 경우는
글로벌 접두사 연산자
\
를 붙여 주거나,(namespace중에서 글로벌한 클래스등을 사용하려고 하는 경우에 필요. 참고 )
\Greeting::hello(); // 結果 hello
또는,
use Greeting;
Greeting::hello(); // 結果 hello
OK.
Reference
이 문제에 관하여([라라벨] Facade 작성의 흐름), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gentuki/items/2c6308c3ec2d1ce6ae37텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)