Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

In Laravel 5.0 code like this is used for names-pacing/loading classes:

  'providers' => [

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

However, am seeing this in 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,
]

My question: What is the benefit of this Illuminate\Bus\BusServiceProvider::class over this 'Illuminate\Bus\BusServiceProvider', when should I append ::class to a class name?

Is there any where I can find this in PHP documentation?

like image 575
Emeka Mbah Avatar asked Jun 12 '15 10:06

Emeka Mbah


1 Answers

PHP Documentation on ::class

The feature has been introduced with version 5.5, which is now required by Laravel 5.1

The magic ::class property holds the FQN (fully qualified name) of the class.

The advantages of it mostly comes with a good IDE. Some are:

  • Fewer typos
  • Easier Refactoring
  • Auto-Completion
  • Click on class to jump to the file

Sometimes it's also nice that you can import the class instead of having the full name in the code. This makes your code cleaner and all dependencies are declared with use at the top of the class. (I'm saying sometimes because for one it doesn't make sense to import all classes in a config file like app.php)

like image 160
lukasgeiter Avatar answered Oct 15 '22 06:10

lukasgeiter