파사드의 기본 구조에 대한 소스이다.
실제 코드하고는 차이가 좀 있지만 이렇게 구성되어 있구나라고 알 수 있다.
[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