为什么 ::class 附加到 PHP class in Laravel 5.1

Why is ::class appended to PHP class in Laravel 5.1

在 Laravel 5.0 中,这样的代码用于 names-pacing/loading classes:

  'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
         'Illuminate\Foundation\Providers\ArtisanServiceProvider',
         'Illuminate\Auth\AuthServiceProvider',
         'Illuminate\Broadcasting\BroadcastServiceProvider',
         'Illuminate\Bus\BusServiceProvider',
]

但是,我在 Laravel 5.1

中看到了这个
'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
         Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
         Illuminate\Auth\AuthServiceProvider::class,
         Illuminate\Broadcasting\BroadcastServiceProvider::class,
         Illuminate\Bus\BusServiceProvider::class,
]

我的问题:这个 Illuminate\Bus\BusServiceProvider::class 比这个 'Illuminate\Bus\BusServiceProvider' 有什么好处,我什么时候应该将 ::class 附加到 class 名称?

我可以在 PHP 文档中找到它吗?

PHP Documentation on ::class

该功能已在 5.5 版中引入,现在 Laravel 5.1

需要该功能

魔术 ::class 属性 保存 class.

的 FQN(完全限定名称)

它的优点多半是自带的好IDE。一些是:

  • 错别字减少
  • 更容易重构
  • 自动完成
  • 点击class跳转到文件

有时您可以导入 class 而不是在代码中包含全名也很好。这使您的代码更清晰,并且所有依赖项都在 class 顶部使用 use 声明。 (我说有时是因为对于一个人来说,在配置文件中导入所有 class 是没有意义的,例如 app.php