我正在阅读Laravel文档,试图更深入地了解框架,但我在外观方面遇到了一些麻烦。我想我明白它们是什么,它们在访问Laravels核心时主要用于方便。
我对这个话题很困惑:
- 外立面如何运作? (特别是与getFacadeAccessor()方法有关。这真是神奇吗?)
醇>
答案 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);
}