Magento 2: Convention de dénomination de type virtuel

10

Date: 1er juin 2015 (compte tenu de la nature changeante de Magento 2)

Dans Magento 2, vous pouvez configurer un "type virtuel" dans le di.xmlfichier de configuration d' un module . Ces types virtuels vous permettent de modifier les arguments d'une dépendance injectée spécifique.

Dans le code principal de Magento 2, il semble y avoir deux conventions de dénomination pour les types virtuels. Dans le premier, un type virtuel a un nom qui semble identique à un vrai nom de classe PHP.

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

dans le second, une simple chaîne sans barre oblique inverse est utilisée

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

Y a-t-il une différence pratique entre les deux conventions de dénomination ci-dessus? c'est-à-dire que le nom que vous avez choisi pour virtualTypea un impact sur son comportement, ou est-ce juste une chaîne unique au monde qui identifie le type afin que vous puissiez l'utiliser plus tard.

Alan Storm
la source
bien pour les développeurs qui apprennent Magento2, c'est tout à fait une confusion quand ils vérifient un argument qui a un nom de classe, et à la place il se révèle être un type virtuel, je suppose bien souligné ici alanstorm.com/magento_2_object_manager_virtual_types
huzefam

Réponses:

9

Le nom du type virtuel n'est qu'une chaîne unique au monde. Il n'y a aucune différence de comportement pour les types virtuels nommés différemment. Nous n'avons tout simplement pas de convention de dénomination forte pour les types virtuels. Personnellement, je préfère la deuxième approche, car il est évident que c'est un type virtuel, pas une vraie classe.

Anton Kril
la source
1
Ceci étant un article de 1,5 an, les conventions sont-elles toujours qu'il n'y a pas de convention? Je devrais utiliser ce que je veux pour les types virtuels, mais vous m'encouragez toujours à utiliser la deuxième approche? Ou avez-vous une nouvelle norme maintenant?
Marius