Почему:: класс добавлен в класс PHP в Laravel 5.1
В Laravel 5.0 код, подобный этому, используется для именования / загрузки классов:
'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
к имени класса?
Есть ли где я могу найти это в документации PHP?
1 ответ
Эта функция была введена в версии 5.5, которая теперь требуется для Laravel 5.1
Магия ::class
Свойство содержит FQN (полное имя) класса.
Преимущества этого в основном приходят с хорошей IDE. Некоторые:
- Меньше опечаток
- Легче Рефакторинг
- Автодополнение
- Нажмите на класс, чтобы перейти к файлу
Иногда также приятно, что вы можете импортировать класс вместо полного имени в коде. Это делает ваш код чище, и все зависимости объявлены с use
на вершине класса. (Я говорю иногда, потому что для одного не имеет смысла импортировать все классы в файле конфигурации, как app.php
)