>PHP 프레임워크 >Laravel >Laravel 프레임워크(코드)의 서비스 제공자 및 Facade 패턴(Facade) 사용법

Laravel 프레임워크(코드)의 서비스 제공자 및 Facade 패턴(Facade) 사용법

不言
不言원래의
2018-07-31 18:00:372675검색

laravel 프레임워크에서는 내장 파일 시스템의 관련 작업을 사용하면 매우 편리합니다. 그런데 이를 어떻게 구현하나요? 다음 기사에서는 PHP 중국어 웹사이트에서 관련된 원리에 대해 자세히 설명할 것입니다. 기사의 내용을 직접 살펴보겠습니다.

소개부터 시작하겠습니다:

라라벨의 자체 파일 시스템을 예로 들어보겠습니다. 구성 파일 config/app.php의 공급자 배열에는 서비스 공급자가 등록됩니다:

IlluminateFilesystemFilesystemServiceProvider::class,

별칭 배열 A

‘File’ => IlluminateSupportFacadesFile::class,

이 두 단계를 통해 Laravel에서 제공하는 파일 시스템 관련 작업을 매우 편리하게 사용할 수 있으며 호출 형식은 다음과 같이 매우 간단합니다.

File::exist($path), Judge 파일이 존재하는지 여부.

File::get($path, $lock = false), 파일 내용을 가져옵니다.

File::append($path, $data), 파일 끝에 내용을 추가합니다.

File::files($directory), 디렉터리의 모든 파일을 가져옵니다.

Laravel의 서비스 제공자와 Facade 모드에 대해 각각 이야기해 보겠습니다.

Service Provider

먼저 정의를 살펴보겠습니다.

Service Provider는 모든 Laravel 애플리케이션이 시작되는 중심입니다. 여러분의 애플리케이션을 포함한 모든 핵심 Laravel 서비스는 서비스 제공자를 통해 시작됩니다.

/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php에 있는 파일 시스템 서비스 제공자에서 등록 메소드는 싱글톤이 바인딩되어 있음을 확인할 수 있습니다.

protected function registerNativeFilesystem()
{
    $this->app->singleton('files', function () {
        return new Filesystem;
    });
}

이 싱글톤은 클래스에 대한 파일 시스템 싱글톤 패턴입니다. . 물론 이 서비스 제공자는 다른 싱글톤을 바인딩하거나 더 많은 작업을 수행할 수도 있습니다. 여기서는 File::exist() 호출 메서드의 원리만 연구합니다.

그리고 실제로는 Filesystem 클래스의 인스턴스인 파일의 단일 인스턴스가 있습니다.

이때 Facade가 없으면 Filesystem 인스턴스의 메소드를 다음과 같이 호출할 수도 있습니다.

app(‘files’)->exist($path)

자, 이제 Facade에 대해 이야기해 보겠습니다.

Facade Facade 모드

Facade는 애플리케이션의 서비스 컨테이너에서 사용 가능한 클래스가 "정적" 인터페이스를 제공합니다. Laravel에는 많은 기능이 포함되어 있습니다. 거의 모든 서비스에 액세스하는 데 사용할 수 있는 외관입니다. 라라벨 파사드 이는 서비스 컨테이너에 있는 기본 클래스의 "정적 프록시"입니다. 전통적인 정적 메소드 호출과 비교하여 Facade는 더 간단하고 풍부한 구문을 제공할 뿐만 아니라 더 나은 테스트 가능성과 확장성을 제공합니다.

이 글의 시작 부분에서 별칭 배열이 파일을 정의한다고 언급했습니다. 특정 클래스는

IlluminateSupportFacadesFile::class,

내용은

class File extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return 'files';
    }
}

실제로 이름을 반환합니다. 파일, 방금 바인딩된 싱글톤 패턴의 이름이 아닌가요? 좋아요.

이런 방식으로 File 별칭이나 Facade를 사용하여 이 Filesystem 인스턴스의 메서드를 호출할 수 있습니다.

이 글을 통해 서비스 제공자와 Facade, 실제로 호출되는 클래스의 인스턴스 간의 관계를 이해할 수 있기를 바랍니다.

위 내용은 이 글의 전체 내용입니다. 더 많은 라라벨 내용을 보려면 laravel 프레임워크 소개 튜토리얼을 주목하세요.

추천 관련 글:

Laravel 프레임워크의 보조 기능: 선택적 () 기능 소개

Laravel5.5의 새로운 기능: 사전 설정 명령 분석

추천 관련 강좌:

2017년 최신 Laravel 추천 비디오 튜토리얼 5개

위 내용은 Laravel 프레임워크(코드)의 서비스 제공자 및 Facade 패턴(Facade) 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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