Почему псевдонимы используют :: class в конце в Laravel - PullRequest
0 голосов
/ 01 сентября 2018

Добрый день всем, я начинающий разработчик Laravel и хотел спросить вас, почему псевдонимы в Laravel используют :: class в конце для eaxmple: 'DB' => Illuminate \ Support \ Facades \ DB :: class, чтобы Я знаю, что :: class означает, что он вернет полностью определенное имя класса в строковом формате. Ну, значит ли это, что если я использую DB :: insert (), то это будет эквивалентно Illuminate \ Support \ Facades \ DB :: insert (). Таким образом, использование :: class означает, что мне не нужно писать полностью определенное имя класса.

1 Ответ

0 голосов
/ 01 сентября 2018

\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 из вашего конфигурационного файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...