Magento 2: Namenskonvention für virtuelle Typen

10

Datum: 1. Juni 2015 (angesichts der sich ändernden Natur von Magento 2)

In Magento 2 können Sie einen "virtuellen Typ" in der di.xmlKonfigurationsdatei eines Moduls konfigurieren. Mit diesen virtuellen Typen können Sie die Argumente einer bestimmten injizierten Abhängigkeit ändern.

Im Kerncode von Magento 2 scheint es zwei Namenskonventionen für virtuelle Typen zu geben. Im ersten Fall hat ein virtueller Typ einen Namen, der mit einem realen PHP-Klassennamen identisch erscheint.

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

Im zweiten Fall wird eine einfache, Backslash-freie Zeichenfolge verwendet

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

Gibt es einen praktischen Unterschied zu den beiden oben genannten Namenskonventionen? Hat der Name, den Sie für a ausgewählt virtualTypehaben, einen Einfluss auf sein Verhalten oder handelt es sich nur um eine global eindeutige Zeichenfolge, die den Typ identifiziert, damit Sie ihn später verwenden können.

Alan Storm
quelle
Für Entwickler, die Magento2 lernen, ist dies eine ziemliche Verwirrung, wenn sie ein Argument mit einem Klassennamen überprüfen. Stattdessen stellt sich heraus, dass es sich um einen virtuellen Typ handelt. Ich denke, hier wird gut darauf hingewiesen. alanstorm.com/magento_2_object_manager_virtual_types
huzefam

Antworten:

9

Der Name des virtuellen Typs ist nur eine global eindeutige Zeichenfolge. Es gibt keinen Unterschied im Verhalten für unterschiedlich benannte virtuelle Typen. Wir haben einfach keine starke Namenskonvention für virtuelle Typen. Ich persönlich bevorzuge den zweiten Ansatz, weil es offensichtlich ist, dass dies ein virtueller Typ ist, keine reale Klasse.

Anton Kril
quelle
1
Da es sich um einen 1,5-jährigen Beitrag handelt, gibt es immer noch Konventionen, dass es keine Konvention gibt? Ich sollte für virtuelle Typen verwenden, was immer ich will, aber Sie ermutigen mich trotzdem, den zweiten Ansatz zu verwenden? Oder haben Sie inzwischen einen neuen Standard?
Marius