为什么 ::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 文档中找到它吗?
该功能已在 5.5 版中引入,现在 Laravel 5.1
需要该功能
魔术 ::class
属性 保存 class.
的 FQN(完全限定名称)
它的优点多半是自带的好IDE。一些是:
- 错别字减少
- 更容易重构
- 自动完成
- 点击class跳转到文件
有时您可以导入 class 而不是在代码中包含全名也很好。这使您的代码更清晰,并且所有依赖项都在 class 顶部使用 use
声明。 (我说有时是因为对于一个人来说,在配置文件中导入所有 class 是没有意义的,例如 app.php
)
在 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 文档中找到它吗?
该功能已在 5.5 版中引入,现在 Laravel 5.1
需要该功能魔术 ::class
属性 保存 class.
它的优点多半是自带的好IDE。一些是:
- 错别字减少
- 更容易重构
- 自动完成
- 点击class跳转到文件
有时您可以导入 class 而不是在代码中包含全名也很好。这使您的代码更清晰,并且所有依赖项都在 class 顶部使用 use
声明。 (我说有时是因为对于一个人来说,在配置文件中导入所有 class 是没有意义的,例如 app.php
)