> PHP 프레임워크 > Laravel > Laravel 파사드의 용도는 무엇입니까?

Laravel 파사드의 용도는 무엇입니까?

WBOY
풀어 주다: 2022-02-15 11:08:51
원래의
2113명이 탐색했습니다.

laravel에서 파사드는 애플리케이션의 IoC 서비스 컨테이너 클래스에 대한 정적 인터페이스를 제공하는 데 사용됩니다. Laravel의 파사드는 서비스 컨테이너의 기본 클래스에 대한 정적 프록시 역할을 하며 기존 정적 메서드와 비교하여 제공될 수 있습니다. 유지 관리 더 쉽게 테스트 가능한 구문.

Laravel 파사드의 용도는 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, Laravel 6 버전, DELL G3 컴퓨터.

laravel 파사드의 용도는 무엇인가요?

소개

Facade는 애플리케이션의 IoC 서비스 컨테이너 클래스에 대한 정적 인터페이스를 제공합니다. Laravel에는 캐시 등과 같은 일부 Facade가 포함되어 있습니다. Laravel의 파사드는 서비스 컨테이너의 기본 클래스에 대한 "정적 프록시" 역할을 하며, 기존의 정적 방법과 비교하여 유지 관리 중에 테스트하기 쉽고, 더 유연하며, 간결하고 우아한 구문을 제공할 수 있습니다.

Explanation

Laravel 애플리케이션의 맥락에서 Facade는 클래스입니다. 이 클래스를 사용하면 이 함수는 Facade 클래스에 정의되어 있습니다. Laravel의 Facade와 여러분이 직접 정의한 모든 Facade는 Facade 클래스를 상속합니다.

Facade 클래스는 getFacadeAccessor 메소드 하나만 구현하면 됩니다. 컨테이너에서 해결해야 하는 모든 작업은 이 방법으로 수행됩니다. Facade 기본 클래스는 Facade에서 확인된 객체에 대한 호출을 지연시킬 수 있는 __callStatic() 매직 메서드를 사용합니다.

따라서 Facade를 사용하여 Cache:get과 같이 호출하면 laravel은 Ioc 서비스 컨테이너에서 캐시 관리 클래스를 확인한 다음 이 클래스에서 get 메서드를 호출합니다. Laravel의 Facades를 사용하여 서비스를 찾을 수 있습니다. 이는 Laravel의 IoC 서비스 컨테이너를 사용하는 데 더 편리한 구문입니다.

장점

Facade는 간단하고 기억하기 쉬운 구문을 제공하므로 긴 클래스 이름을 기억하지 않고도 Laravel이 제공하는 기능을 사용할 수 있습니다. 동적 방법 고유한 사용법으로 테스트가 쉽습니다.

실제로 아래

예제를 사용하여 Laravel의 캐싱 시스템을 호출하세요. 먼저 다음 코드 줄을 살펴보면 이것이 Cache 클래스의 get이라는 정적 메서드에 대한 직접 호출이라고 생각할 수 있습니다.

$value = Cache::get('key');
로그인 후 복사

그러나 IlluminateSupportFacadesCache 클래스를 보면 get 정적 메소드가 전혀 없다는 것을 알 수 있습니다.

class Cache extends Facade {
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor() { return 'cache'; }
}
로그인 후 복사

Cache 이 클래스는 getFacadeAccessor()라는 메소드를 정의하는 Facade 기본 클래스를 상속합니다. 이 메소드가 수행하는 작업은 Ioc 바인딩 이름을 반환하는 것이며 여기서는 캐시입니다.

사용자가 Cache Facade의 정적 메소드를 참조하면 Laravel은 Ioc 서비스 컨테이너에서 캐시 바인딩을 해결하고 객체에 대해 요청된 메소드를 실행합니다(여기서 이 메소드를 가져옵니다).

그래서 Cache::get을 호출할 때의 실제 의미는 다음과 같습니다.

$value = $app->make('cache')->get('key');
로그인 후 복사

Import Facades

facade를 사용할 때 컨트롤러에서 네임스페이스를 사용하는 경우 Facade 클래스는 다음과 같아야 합니다. 이 네임스페이스로 가져왔습니다. 모든 Facade는 전역 네임스페이스에 속합니다:

<?php namespace App\Http\Controllers;
use Cache;
class PhotosController extends Controller {
    /**
     * Get all of the application photos.
     *
     * @return Response
     */
    public function index()
    {
        $photos = Cache::get(&#39;photos&#39;);
        //
    }
}
로그인 후 복사

Creating Facades

Facade를 생성하려면 세 가지만 필요합니다:

  • IoC 바인딩.

  • 파사드 수업.

  • Facade 별칭 구성.

아래에서는 PaymentGatewayPayment 클래스를 정의합니다.

namespace PaymentGateway;
class Payment {
    public function process()
    {
        //
    }
}
로그인 후 복사

Ioc 서비스 컨테이너에서 이 클래스를 해결할 수 있어야 합니다. 따라서 먼저 서비스 공급자 바인딩을 추가하세요.

App::bind(&#39;payment&#39;, function()
{
    return new \PaymentGateway\Payment;
});
로그인 후 복사

이 바인딩을 등록하는 가장 좋은 방법은 새 서비스 공급자를 만들고 이름을 PaymentServiceProvider로 지정한 다음 등록 메서드에 바인딩하는 것입니다. 그런 다음 laravel을 구성하고 구성 파일 config/app.php에서 서비스 공급자를 로드합니다.

다음 단계는 자신만의 Facade 클래스를 만드는 것입니다:

use Illuminate\Support\Facades\Facade;
class Payment extends Facade {
    protected static function getFacadeAccessor() {
             return &#39;payment&#39;; 
    }
}
로그인 후 복사

마지막으로 원하는 경우 Facade에 별칭을 추가하고 config/app.php 구성 파일의 별칭 배열에 넣을 수 있습니다.

결제 클래스의 인스턴스에서 프로세스 메서드를 호출할 수 있습니다. 좋아요:

Payment::process();
로그인 후 복사

【관련 추천: laravel 비디오 튜토리얼

위 내용은 Laravel 파사드의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿