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