Laravel中对别名和提供者的实际需求是什么

时间:2018-08-22 06:59:07

标签: php laravel

大家好 我是Laravel的新手,我面对了解config / app.php文件中的别名和提供程序需求的问题。另外,为什么在每个别名和提供程序(如

)的末尾使用:: class
'App' => Illuminate\Support\Facades\App::class,   Illuminate\Auth\AuthServiceProvider::class

如果省略:: class会怎样。

请大家简单解释一下

2 个答案:

答案 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的。例如: