Почему:: класс добавлен в класс 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)