Facade getFacadeAccessor()方法如何工作?

时间:2018-02-17 16:18:31

标签: laravel

我正在阅读Laravel文档,试图更深入地了解框架,但我在外观方面遇到了一些麻烦。我想我明白它们是什么,它们在访问Laravels核心时主要用于方便。

我对这个话题很困惑:

  
      
  1. 外立面如何运作? (特别是与getFacadeAccessor()方法有关。这真是神奇吗?)
  2.   

1 个答案:

答案 0 :(得分:3)

Facades是另一种在不手动创建对象的情况下使用类的方法。它们只是Laravel container注册的类的快捷方式。

例如,这个:

DB::

与您使用容器完全相同:

app('db')->

因此,DB::外观只是app('db')->的快捷方式。

是的,Facade使用魔术方法__callStatic()来解析一个类的实例并执行给定的方法:

public static function __callStatic($method, $args)
{
    $instance = static::getFacadeRoot();

    if (! $instance) {
        throw new RuntimeException('A facade root has not been set.');
    }

    return $instance->$method(...$args);
}