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

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

php | laravel 파사드(Facade) 구조

본문

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

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

 

[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

댓글 0개

등록된 댓글이 없습니다.

Menu