根据文件:
外墙有许多好处。它们提供简洁,令人难忘的语法,允许您使用Laravel的功能,而无需记住必须手动注入或配置的长类名。此外,由于它们独特地使用了PHP的动态方法,因此很容易测试。
根据这个link
免责声明:我不一定同意外墙不好或反模式
问题。 Facades是WET代码吗?
答案 0 :(得分:2)
与Facade
中的潮湿或干燥无关。 Facade只是服务容器顶部的一个额外层。 Facade只做一件事,那就是,它提供了一个类的给定名称,该类是另一个类的别名,通过它可以解析主类,并允许您使用static
方法调用样式轻松完成即使它不是静止的。我们来看一个例子:
$request = app('request');
$inputs = $request->all();
上面的代码解析了容器中的请求类,它可以从容器中解析它,因为在容器中,键request
已绑定/映射到将由框架解析的类。解析机制存储在容器内部,因此可以解析该类。请注意,门面没有涉及立面吗?
好吧,如果你使用外观做同样的事情,那么你可以使用这样的东西来做:
$inputs = Request::all();
在这种情况下,将调用该类的Facade,它将解析基础类。主要有两个步骤:
1。获取该别名,在本例中为request
2。使用别名解析类,即:app('request')
所以,它为你做的是,实际上门面本身为你调用app('request')
,但它只做了额外的事情,它首先发现了alias
名称,所以它可以从容器中使用该名称调用它。立面提供了一个容易进入类(或建筑物)的入口。希望我回答你的问题。有关更多信息,请参阅documentation中的外观。