Em Magento 1
que éramos usados para colocar nossas classes nesses diretórios
- Quadra
- Ajudante
- Modelo
- Recurso
e use um nome de classe simples sem letras maiúsculas no meio do nome.
Se dermos uma olhada em alguns casos em Magento 2 Core
Ajudantes
Localização :
- \Foo\Bar\Helper
Nome :
- *.php
Exemplos :
- \Magento\ImportExport\Helper\Report
-\Magento\Cms\Helper\Wysiwyg\Images
Observadores
Localização :
- \Foo\Bar\Observer
Nome :
- *.php
- *Observer.php
Exemplos :
- \Magento\CustomerCustomAttributes\Observer\SalesOrderAddressAfterLoad
-\Magento\CustomerBalance\Observer\ProcessBeforeOrderPlaceObserver
Plugins
Localização :
- \Foo\Bar\Plugin
Nome :
- *.php
- *Plugin.php
Exemplos :
- \Magento\Catalog\Plugin\Block\Topmenu
- \Magento\PageCache\Model\App\FrontController\BuiltinPlugin
Fonte : http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html#declaring-a-plugin
ConfigProvider
Localização :
- \Foo\Bar\Model
Nome :
- *ConfigProvider.php
Exemplos :
- \Magento\Tax\Model\TaxConfigProvider
-\Magento\Payment\Model\IframeConfigProvider
Minhas perguntas são:
- Se houver
good
/bad
/best
práticas para isso emMagento 2
? - Se eu quiser criar um costume,
DataProvider
por exemplo, o que será?\Foo\Bar\Provider\CustomDataProvider
\Foo\Bar\DataProvider\Custom
\Foo\Bar\Model\Provider\CustomDataProvider
\Foo\Bar\Helper\Provider\CustomDataProvider
- Como determinar a construção do nome e local da classe, uma pasta na raiz do módulo, no Model, no Helper, etc?
- Depende da fonte / tipo de dados recuperados?
- Quando precisamos adicionar o sufixo ao nome da classe?
Parte de uma resposta para
Virtual Types
: https://community.magento.com/t5/Magento-DevBlog/Virtual-Types-Naming-Convention/ba-p/61510
fonte
Eu acho que é baseado em opinião, mas concordo que existem algumas inconsistências em relação à nomeação e localização de classes no M2.
Aqui está a lista que eu criei sobre a nomeação de pastas. Para mim, você sempre deve usar essas pastas quando puder, a fim de tornar seu módulo mais fácil de navegar e entender por qualquer outra pessoa:
Além disso, o M2 usa algumas pastas muito específicas, mas eu não as incluí nesta lista:
O bom do M2 é que você pode usar e criar qualquer pasta que precisar. Se algo não pertencer à lista acima, crie sua própria pasta e coloque suas classes nelas, apenas tente ser consistente.
fonte
Eu acho que a principal prioridade deve ser tornar o código o mais documentado possível. Portanto, em vez de colocar tudo nos diretórios Model ou Helper, encontrar um bom nome que descreva o que o código abaixo faz é uma abordagem melhor. Claro, também é mais difícil porque requer muito mais pensamento.
Por exemplo, em vez de usar
Model/Config/Converter.php
, o nomeOrderStateMachine/TransitionsConfiguration/XmlToArrayConverter.php
diz muito mais o que um módulo e uma classe fazem.fonte
Já existem algumas respostas realmente boas acima. O que eu gostaria de acrescentar é que você deve evitar colocar o código abaixo
app/code
e usar um método de instalação baseado em compositor, que acabará colocando o código abaixovendor/
.fonte