php - 为什么别名在 Laravel 的末尾使用 ::class
问题描述
大家好,我是初学者 Laravel 开发人员,想问一下为什么 Laravel 中的别名在 eaxmple 的末尾使用 ::class:'DB' => Illuminate\Support\Facades\DB::class,也就是说,我知道 ::class 意味着它将以字符串格式返回类的完全限定名称。好吧,这是否意味着如果我使用 DB::insert() 那么它将等价于 Illuminate\Support\Facades\DB::insert()。因此, ::class 的使用意味着我不必编写类的完全限定名。
解决方案
\DB::insert
相当于调用\Illuminate\Support\Facades\DB::insert()
,但不是因为::class
语法。
如果输入的行是一个字符串,它也可以工作aliases
,这些都是一样的:
use Illuminate\Support\Facades\DB as DBFacade;
'DB' => 'Illuminate\Support\Facades\DB', // (string) Illuminate\Support\Facades\DB
'DB' => \Illuminate\Support\Facades\DB::class, // (string) Illuminate\Support\Facades\DB
'DB' => DBFacade::class, // (string) Illuminate\Support\Facades\DB
::class
只是一个方便的功能,看到这个答案有两个原因,它很有帮助。
您可以调用“别名”名称(没有命名空间)的真正原因是因为 Laravel 向自动加载器添加了一个方法,如果使用 PHP 或自动生成的存根类请求其别名,则该方法将加载该类,基于配置文件中的数组。class_alias
aliases
推荐阅读
- mysql - 基于另一个字段的字段值总和
- kubernetes - Mandate Group Search Condition in Dex LDAP Coonector
- spring - Handler Goblal Exceptions Spring - add data when sending exception
- r - 如何在 R 中使用换行符?
- javascript - 通过Javascript中的乱序ID数组过滤对象数组
- sql - SQL - 比较值
- c# - 如何在 ASP.NET MVC 控制器中获取 url
- c++ - STL 迭代器、指针和 std::nullptr_t 的模板函数
- python - 为什么积极的前瞻有效,而消极的前瞻却没有?
- ios - 设备上的语音识别是一回事吗?