Magento 2: Соглашение об именовании виртуальных типов

10

Дата: 1 июня 2015 г. (учитывая изменяющуюся природу Magento 2)

В Magento 2 вы можете настроить «виртуальный тип» в di.xmlфайле конфигурации модуля . Эти виртуальные типы позволяют изменять аргументы конкретной внедренной зависимости.

В основном коде Magento 2, по-видимому, существует два соглашения об именах для виртуальных типов. В первом случае виртуальный тип имеет имя, которое выглядит идентично реальному имени класса PHP.

#File: app/code/Magento/CatalogRule/etc/di.xml
<virtualType name="Magento\Catalog\Pricing\Price\Pool" ...

во второй используется простая строка без обратной косой черты

#File: app/code/Magento/CatalogSearch/etc/di.xml
<virtualType name="advancedSearchFilterList" ...

Есть ли практическое отличие от двух вышеуказанных соглашений об именах? т.е. virtualTypeвлияет ли выбранное вами имя на его поведение, или это просто глобально уникальная строка, которая идентифицирует тип, чтобы вы могли использовать его позже.

Алан Сторм
источник
Что ж, для разработчиков, изучающих Magento2, это большая путаница, когда они проверяют аргумент, который имеет имя класса, и вместо этого он оказывается виртуальным типом, я думаю, что здесь хорошо указано alanstorm.com/magento_2_object_manager_virtual_types
huzefam
См community.magento.com/t5/Magento-DevBlog/...
Sergii Иващенко

Ответы:

9

Имя виртуального типа - это просто глобально уникальная строка. Нет различий в поведении для виртуальных типов с разными именами. У нас просто нет строгого соглашения об именах для виртуальных типов. Я лично предпочитаю второй подход, потому что он делает очевидным, что это виртуальный тип, а не реальный класс.

Антон Криль
источник
1
Это сообщение 1,5 года. Соглашения все еще не заключены? Я должен использовать то, что я хочу, для виртуальных типов, но вы все еще поощряете меня использовать второй подход? Или у вас уже есть новый стандарт?
Мариус