为什么别名在Laravel结尾使用:: class

时间:2018-09-01 06:07:33

标签: php laravel

对所有人来说,美好的一天,我是Laravel的新手开发人员,想问一下为什么Laravel中的别名为什么在末尾使用:: class:'DB'=> Illuminate \ Support \ Facades \ DB :: class,是的,我知道:: class表示它将以字符串格式返回类的完全限定名称。好吧,这是否意味着如果我使用DB :: insert(),那么它将等同于Illuminate \ Support \ Facades \ DB :: insert()。因此,使用:: class意味着我不必编写类的完全限定名称。

1 个答案:

答案 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数组。