大家好 我对Laravel很陌生,我遇到了理解位于config/app.php文件中的别名和提供程序的需求的问题。另外,为什么在每个别名和提供程序的末尾使用 ::class ,例如
'App' => IlluminateSupportFacadesApp::class, IlluminateAuthAuthServiceProvider::class
如果省略 ::类怎么办。
请你们用简单的术语解释一下吗
::class
这是一种告诉代码读取类的实际名称而不是类本身的方法。例如,如果您已将use IlluminateSupportFacadesApp
添加到文件的标头中,则只需执行App::class
即可使用,这可以防止将来在代码中进行大量替换,因此您只需要替换标题行。而且,如果不使用::class
则必须使用类名完全限定的字符串。
好吧,您实际上可能不需要别名,但是Laravel在内部使用它们进行多项操作。
根据他们关于外墙的文件:
在Laravel应用程序的上下文中,外观是一个类,它提供对容器中对象的访问
这意味着您可以静态访问任何别名方法。
截至有关服务提供商的文档:
服务提供商是所有Laravel应用程序引导的中心位置。一般来说,注册事物,包括注册服务容器绑定、事件侦听器、中间件,甚至路由
如果您希望在系统上发生任何其他事情之前加载特定数据,注册不同的服务,有时下载组件,这将是必要的。
如果您没有使用它们的良好实践,其中一些对您来说是不可见的,如果您决定将代码的某些部分转换为独立模块,则可能需要其中一些。
但主要是,它们的必要性主要在Laravel方面而不是在开发人员方面,也就是说,考虑到您对框架和(或(引导/服务包含的经验。
添加到@Rafaels答案中。 关于::class
语法。
这个功能在 php 5.5 中提供,这样你就不必将类名保留在字符串中。Classname::class
将提供完整的类路径
use AppServicesService1ServiceClass1;
//...
// suppose you want an array of some classes you can use this syntax
public $realation= [
Serviceclass1::class, // Equivalent to "AppServicesService1ServiceClass1"
];
来自文档
可以使用 ClassName::class 来获取完全限定的名称 类名的类。例如: