Facade는 애플리케이션의 서비스 컨테이너에서 사용할 수 있는 클래스에 "정적" 인터페이스를 제공합니다.
Laravel에는 많은 Facade가 포함되어 있으며, 여러분도 모르게 이를 사용하고 있을 수도 있습니다!
xpower의 정적 인터페이스(facade)
전제 조건 1: 서비스 컨테이너(xpower)에 바인딩된 클래스가 있습니다
전제 조건 2: 서비스 공급자에 이 클래스를 등록했습니다(서비스 컨테이너의 regisrer 아래에 있는 싱글톤 메서드)
5. 다음으로 xpower 파사드를 생성하고 모두 파사드 기반을 상속합니다. 수업. getFacadeAccessor 메소드를 구현해야 합니다. 실제로 서비스 공급자가 등록한 바인딩 싱글톤(싱글톤 메서드)의 이름인 문자열이 반환됩니다. 이 이름은 아무렇게나 쓸 수 있습니다. 여기에는 xpower
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class XP extends Facade { protected static function getFacadeAccessor() { return 'xpower'; } }
6. 그런 다음 구성 파일 config/app.php에 Facade 카테고리 이름을 등록해야 합니다:
'aliases' => [ ...//其他门面类别名映射 'XP' => App\Facades\XP::class, ],
현재 XP::activate를 직접 사용하여 xpower 초능력을 활성화할 수 있습니다
AppFacadesXP 소개를 사용하세요. 그렇지 않으면 찾을 수 없습니다.
분석:
1.XP::activate 먼저 컨테이너로 이동하여 이 XP 인스턴스(컨테이너에 이미 등록되어 있음)를 찾고 xpower 문자열을 반환합니다.
2. 문자열 xpower도 컨테이너에 바인딩되어 등록된 다음 Xpower 서비스 인스턴스를 반환합니다.
3. ::activate는 실제로 기본 클래스 파사드에서 __callstatic 메서드를 호출합니다. 그런 다음 ->show()로 변환이 이런 방식으로 호출됩니다.