Почему маршруты в HTTP-ядре Laravel используют полные имена классов AND :: class? - PullRequest
0 голосов
/ 04 февраля 2020

В \ App \ http \ Kernel много всего происходит. php. Если абсолютные имена классов указаны явно, зачем использовать PHP 's :: class Feature (для возврата полностью определенных имен классов)?

Пример:

protected $middleware = [ \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,

1 Ответ

2 голосов
/ 04 февраля 2020

Это просто лучшая практика. Вы можете использовать все, что приводит к полному имени класса, в виде строки, как все они действительны:

protected $middleware = [
    \App\Http\Middleware\CheckForMaintenanceMode::class,

и

use App\Http\Middleware\CheckForMaintenanceMode;
//...
protected $middleware = [
    CheckForMaintenanceMode::class,

и

protected $middleware = [
    '\App\Http\Middleware\CheckForMaintenanceMode',

НО. С последним, поскольку мы используем строку, рефакторинг сложнее с помощью встроенных в IDE инструментов рефакторинга. Предположим, что вы хотите переименовать CheckForMaintenanceMode в MaintenanceMode, среды IDE будут правильно переименовываться в первых 2 случаях, но не в более поздних (трудно определить, является ли строка ссылкой на класс или ... просто строкой)

Итак, ответ таков: лучше всего ссылаться на полные имена классов, используя ::class

...