\DB::insert
эквивалентно вызову \Illuminate\Support\Facades\DB::insert()
, но не потому, что синтаксис ::class
.
Это также сработало бы, если бы строка в aliases
была строкой, все они одинаковы:
use Illuminate\Support\Facades\DB as DBFacade;
'DB' => 'Illuminate\Support\Facades\DB', // (string) Illuminate\Support\Facades\DB
'DB' => \Illuminate\Support\Facades\DB::class, // (string) Illuminate\Support\Facades\DB
'DB' => DBFacade::class, // (string) Illuminate\Support\Facades\DB
::class
- это просто удобная функция, см. этот ответ по двум причинам, это полезно.
Реальная причина, по которой вы можете называть псевдонимом (без пространства имен), заключается в том, что Laravel добавляет метод к автозагрузчику , который загружает класс, если его псевдоним запрашивает имя с использованием PHPs class_alias
или автоматически сгенерированного класса заглушки, основанного на массиве aliases
из вашего конфигурационного файла.