Magento 2: Convención de nomenclatura de tipo virtual


10

Fecha: 1 de junio de 2015 (dada la naturaleza cambiante de Magento 2)

En Magento 2, puede configurar un "tipo virtual" en el di.xmlarchivo de configuración de un módulo . Estos tipos virtuales le permiten cambiar los argumentos de una dependencia inyectada específica.

En el código principal de Magento 2, parece haber dos convenciones de nomenclatura para tipos virtuales. En el primero, un tipo virtual tiene un nombre que parece idéntico a un nombre de clase PHP real.

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

en el segundo, se usa una cadena simple sin barra invertida

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

¿Hay alguna diferencia práctica en las dos convenciones de nombres anteriores? es decir, el nombre que eligió virtualTypetiene un impacto en su comportamiento, o es solo una cadena global única que identifica el tipo para que pueda usarlo más adelante.


Bueno, para los desarrolladores que aprenden Magento2, esto es una gran confusión cuando verifican un argumento que tiene un nombre de clase, y en cambio resulta ser un tipo virtual, supongo que se señaló aquí alanstorm.com/magento_2_object_manager_virtual_types
huzefam

Respuestas:


9

El nombre de tipo virtual es solo una cadena globalmente única. No hay diferencia en el comportamiento de tipos virtuales con nombres diferentes. Simplemente no tenemos una convención de nomenclatura sólida para los tipos virtuales. Personalmente prefiero el segundo enfoque porque hace obvio que este es un tipo virtual, no una clase real.


1
Siendo esta una publicación de 1.5 años, ¿las convenciones siguen siendo que no hay convención? Debo usar lo que quiera para los tipos virtuales, pero ¿todavía me animas a usar el segundo enfoque? ¿O tienes un nuevo estándar por ahora?
Marius
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.