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

Php Laravel中对别名和提供者的实际需求是什么,php,laravel,Php,Laravel,大家好 我对Laravel很陌生,我在理解config/app.php文件中的别名和提供者时遇到了问题。另外,为什么在每个别名和提供程序的末尾使用::class 'App' => Illuminate\Support\Facades\App::class, Illuminate\Auth\AuthServiceProvider::class 如果省略::class会怎么样 请大家用简单的术语解释一下::class这是一种告诉代码读取类的实际名称而不是类本身的方法。例如,如果您在文件头

大家好 我对Laravel很陌生,我在理解config/app.php文件中的别名和提供者时遇到了问题。另外,为什么在每个别名和提供程序的末尾使用::class

'App' => Illuminate\Support\Facades\App::class,   Illuminate\Auth\AuthServiceProvider::class
如果省略::class会怎么样


请大家用简单的术语解释一下::class这是一种告诉代码读取类的实际名称而不是类本身的方法。例如,如果您在文件头中添加了
use illumb\Support\Facades\App
,则只需执行
App::class
,即可使用,这可能会在将来阻止代码中的大量替换,因此您只需替换头行。此外,如果不使用
::class
,则必须使用完全限定为类名的字符串

实际上,您可能不需要别名,但Laravel在内部使用别名进行多个操作

根据他们的意见:

在Laravel应用程序的上下文中,facade是一个类,提供从容器访问对象的权限

这意味着您可以静态访问任何别名方法

截至:

服务提供商是所有Laravel应用程序引导的中心。一般来说,注册事务,包括注册服务容器绑定、事件侦听器、中间件,甚至路由

如果您希望在系统上发生任何其他事情之前加载特定数据,注册不同的服务,有时下载组件,那么这将是必要的

如果没有良好的实践,其中一些是不可见的,如果您决定将部分代码转换为独立模块,则可能需要一些


但主要来说,它们的必要性主要是在Laravel方面,而不是在开发人员方面,也就是说,考虑到您在框架和(或)引导/包含服务方面的经验。

添加到@Rafaels answer。关于
::class
语法

这个特性来自PHP5.5,因此您不必将类名保存在字符串中。
Classname::class
将给出完整的类路径

use App\Services\Service1\ServiceClass1;

//...
// suppose you want an array of some classes you can use this syntax
public $realation= [
    Serviceclass1::class, // Equivalent to "App\Services\Service1\ServiceClass1"
];

可以使用ClassName::class获得完全限定的名称 类的类名称。例如:


::类这是一种告诉代码读取类的实际名称而不是类本身的方法。例如,如果您在文件头中添加了
use illumb\Support\Facades\App
,则只需执行
App::class
,即可使用,这可能会在将来阻止代码中的大量替换,因此您只需替换头行。此外,如果不使用
::class
,则必须使用完全限定为类名的字符串。根据我的经验,每两行代码就有一个这么大的字符串是很可怕的。@Rafael,谢谢你的完美解释。请您也解释一下为什么在Laravel中需要别名和提供者,然后将其作为解决方案,以便我可以接受:)希望澄清:)这些文档中的一些只会随着时间的推移对你有意义。例如,默认情况下,Laravel带有雄辩的功能,我使用的是条令,为此,我也必须阅读并理解很多。对不起,伙计,请你也在解决方案中添加::类的解释,这样看起来更好:)当然,一个很好的回答@RafaelFunny是,我在使用PHP 6年后才真正开始使用它,从来没有考虑过在这之前用字符串写东西有多烦人。哈哈,是的,没错