En Magento 1
estábamos acostumbrados a colocar nuestras clases en estos directorios
- Bloquear
- Ayudante
- Modelo
- Recurso
y use un nombre de clase simple sin letras mayúsculas en el medio del nombre.
Si echamos un vistazo a algunos casos en Magento 2 Core
Ayudantes
Ubicación :
- \Foo\Bar\Helper
Nombre :
- *.php
Ejemplos :
- \Magento\ImportExport\Helper\Report
-\Magento\Cms\Helper\Wysiwyg\Images
Observadores
Ubicación :
- \Foo\Bar\Observer
Nombre :
- *.php
- *Observer.php
Ejemplos :
- \Magento\CustomerCustomAttributes\Observer\SalesOrderAddressAfterLoad
-\Magento\CustomerBalance\Observer\ProcessBeforeOrderPlaceObserver
Complementos
Ubicación :
- \Foo\Bar\Plugin
Nombre :
- *.php
- *Plugin.php
Ejemplos :
- \Magento\Catalog\Plugin\Block\Topmenu
- \Magento\PageCache\Model\App\FrontController\BuiltinPlugin
Fuente : http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html#declaring-a-plugin
ConfigProvider
Ubicación :
- \Foo\Bar\Model
Nombre :
- *ConfigProvider.php
Ejemplos :
- \Magento\Tax\Model\TaxConfigProvider
-\Magento\Payment\Model\IframeConfigProvider
Mis preguntas son:
- Si hay alguna
good
/bad
/best
prácticas para eso enMagento 2
? - Si quiero crear una personalizada,
DataProvider
por ejemplo, ¿cuál será?\Foo\Bar\Provider\CustomDataProvider
\Foo\Bar\DataProvider\Custom
\Foo\Bar\Model\Provider\CustomDataProvider
\Foo\Bar\Helper\Provider\CustomDataProvider
- ¿Cómo determinar la construcción del nombre y ubicación de la clase, una carpeta en la raíz del módulo, en Modelo, en Ayudante, etc.?
- ¿Depende de la fuente de datos recuperada / tipo de datos?
- ¿Cuándo tenemos que agregar el sufijo al nombre de la clase?
Una parte de una respuesta para
Virtual Types
: https://community.magento.com/t5/Magento-DevBlog/Virtual-Types-Naming-Convention/ba-p/61510
fuente
Creo que está basado en opiniones, pero estoy de acuerdo en que hay algunas inconsistencias con respecto a la asignación de nombres de clase y ubicaciones en M2.
Aquí está la lista que se me ocurrió con respecto a la denominación de carpetas. Para mí, siempre debe usar esas carpetas cuando pueda para hacer que su módulo sea más fácil de navegar y comprender para cualquier otra persona:
Además de eso, M2 utiliza algunas carpetas muy específicas, pero no las he incluido en esta lista:
Lo bueno de M2 es que puedes usar y crear cualquier carpeta que necesites. Si algo no pertenece a la lista anterior, cree su propia carpeta y coloque sus clases en ellas solo trate de ser coherente.
fuente
Creo que la máxima prioridad debería ser hacer que el código sea tan autodocumentable como sea posible. Entonces, en lugar de poner todo en directorios Model o Helper, encontrar un buen nombre que describa lo que hace el código debajo es un mejor enfoque. Por supuesto, también es más difícil porque requiere mucha más reflexión.
Por ejemplo, en lugar de usar
Model/Config/Converter.php
, el nombreOrderStateMachine/TransitionsConfiguration/XmlToArrayConverter.php
dice mucho más de lo que hacen un Módulo y una clase.fuente
Ya hay algunas respuestas realmente buenas arriba. Lo que me gustaría agregar es que debe evitar colocar el código debajo
app/code
y, en su lugar, usar un método de instalación basado en el compositor que terminará colocando su código debajovendor/
.fuente