Дата: 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
влияет ли выбранное вами имя на его поведение, или это просто глобально уникальная строка, которая идентифицирует тип, чтобы вы могли использовать его позже.
php
magento2
dependency-injection
virtualtype
Алан Сторм
источник
источник
Ответы:
Имя виртуального типа - это просто глобально уникальная строка. Нет различий в поведении для виртуальных типов с разными именами. У нас просто нет строгого соглашения об именах для виртуальных типов. Я лично предпочитаю второй подход, потому что он делает очевидным, что это виртуальный тип, а не реальный класс.
источник