大家好 我是Laravel的新手,我面对了解config / app.php文件中的别名和提供程序需求的问题。另外,为什么在每个别名和提供程序(如
)的末尾使用:: class'App' => Illuminate\Support\Facades\App::class, Illuminate\Auth\AuthServiceProvider::class
如果省略:: class会怎样。
请大家简单解释一下
答案 0 :(得分:3)
::class
是一种告诉代码读取类的实际名称而不是类本身的方法。例如,如果您在文件的标题中添加了use Illuminate\Support\Facades\App
,则只需执行App::class
就可以使用,将来可能会阻止代码中的大量替换,因此您只需要替换标题行。而且,如果您不使用::class
,则必须使用完全符合类名的字符串。
好吧,您实际上可能不需要别名,但是Laravel在内部将其用于多项操作。
根据他们的documentation on Facades:
在Laravel应用程序的上下文中,facade是一个类,可提供从容器访问对象的操作
这意味着您可以静态访问任何别名方法。
自documentation on Service Providers起:
服务提供者是所有Laravel应用程序引导的中心位置。通常,注册内容包括注册服务容器绑定,事件侦听器,中间件,甚至是路由
如果您希望在系统上发生任何其他事情之前先加载特定数据,那么这将是必要的,注册其他服务,有时下载组件。
如果您没有与它们一起使用的良好实践,那么其中的一些对于您是不可见的,如果您决定将代码的某些部分转换为独立的模块,则可能有必要。
但是,主要地,它们的必要性主要是在Laravel方面而不是在开发人员方面,也就是说,考虑到您对框架和(或)自举/服务包含的经验。
答案 1 :(得分:3)
添加到@Rafaels答案。关于variant
语法。
此功能来自php 5.5,因此您不必将类名保留在字符串中。 ::class
将给出完整的类路径
Classname::class
来自doc
可以使用ClassName :: class获得完全限定的名称 类ClassName的。例如: