【问题标题】:Why aliases use ::class at the end in Laravel为什么别名在 Laravel 的末尾使用 ::class
【发布时间】:2019-02-07 01:43:25
【问题描述】:

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

【问题讨论】:

    标签: php laravel


    【解决方案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 添加了一个方法,如果使用 PHP class_alias 或一个自动生成的存根类,基于配置文件中的 aliases 数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 2017-07-08
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      相关资源
      最近更新 更多