laravel 파사드(Facade) 구조 > IT 기술백서

파사드의 기본 구조에 대한 소스이다.

실제 코드하고는 차이가 좀 있지만 이렇게 구성되어 있구나라고 알 수 있다.

 

[code]

// Facade 의 기본구조

class Facade

{

    public static function __callStatic($name, $args)

    {

        // getFacadeAccessor() 로 binding 문자열을 구해오고

        // binding 된 문자열로 객체를 생성하고

        // 해당 함수($name) 을 실행한다.

        return app()->make(static::getFacadeAccessor())->$name();

    }

    // 상속하는 Facade 클래스는 이 함수를 구현해야 한다.

    protected static function getFacadeAccessor()

    {

        //

    }

}

— Fish — 

class Fish

{

    public function swim()

    {

        return ‘swimming’;

    }

    public function eat()

    {

        return ‘eating’;

    }

}

// fish 문자열로 Fish 객체를 바인딩

app()->bind(‘fish’, function () {

    return new Fish;

});

// 파사드 클래스

class FishFacade extends Facade

{

    // binding 문자열을 리턴해준다.

    protected static function getFacadeAccessor()

    {

        return ‘fish’;

    }

}

— Bike —

class Bike

{

    public function start()

    {

        return ‘starting’;

    }

}

class BikeFacade extends Facade

{

    protected static function getFacadeAccessor()

    {

        return ‘bike’;

    }

}

app()->bind(‘bike’, function () {

    return new Bike;

});

[/code]

 

실행 예제

[code]

FishFacade::swim(); // swimming

FishFacade::eat(); // eating

BikeFacade::start(); // starting

[/code]

 

 https://www.youtube.com/watch?v=zD2VJhOdI5c

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤