Константы в контейнере di в PHP - PullRequest
0 голосов
/ 14 сентября 2018

Я вижу практику, используемую в нескольких рамках в последнее время.Он состоит из регистрации объектов в контейнере с константой класса вместо строки.Обычно объекты добавляются в следующем примере ниже.

$container[MyClass::name] = function(){
    // create object here
}

Я обычно использую строку:

$container['MyClass'] = function(){
    // create object here
}

Я хотел бы знать возможности этой практики.

1 Ответ

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

Это связано с тем, как в IDE осуществляется рефакторинг.

Допустим, у вас есть класс MyClass

И вы используете:

$container['MyClass'] = function(){
    // create object here
}

Если вы переименуете класс «MyClass», вам нужно будет переименовывать строку везде, где вы ее используете. Инструментам рефакторинга будет сложнее выяснить, что строка «MyClass» в данном случае является ссылкой на класс, а не на случайную пробу.

Если вы используете:

$container[MyClass::name] = function(){
   // create object here
}

Вам нужно будет переименовать класс MyClass, но многие IDE (например, phpstorm, vscode и т. Д.) Имеют инструменты для автоматического переименования (рефакторинга) ссылки на класс повсюду в вашем коде, и поскольку вы использовали класс и не строка, которую они поймут, что MyClass нужно будет переименовать.

Таким образом, намного легче поддерживать второе, чем первое.

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