对所有人来说,美好的一天,我是Laravel的新手开发人员,想问一下为什么Laravel中的别名为什么在末尾使用:: class:'DB'=> Illuminate \ Support \ Facades \ DB :: class,是的,我知道:: class表示它将以字符串格式返回类的完全限定名称。好吧,这是否意味着如果我使用DB :: insert(),那么它将等同于Illuminate \ Support \ Facades \ DB :: insert()。因此,使用:: class意味着我不必编写类的完全限定名称。
答案 0 :(得分:1)
\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
只是一项便利功能,请参阅this answer,有两个原因。
您可以调用“别名”名称(没有名称空间)的真正原因是因为Laravel向autoloader添加了一个方法,该方法将load如果使用两个PHP的别名来请求类class_alias
或自动生成的存根类,基于配置文件中的aliases
数组。