In Magento 1
diesen Verzeichnissen haben wir unsere Klassen abgelegt
- Block
- Helfer
- Modell
- Ressource
Verwenden Sie einen einfachen Klassennamen ohne Großbuchstaben in der Mitte des Namens.
Schauen wir uns einige Fälle in Magento 2 Core
Helfer
Ort :
- \Foo\Bar\Helper
Name :
- *.php
Beispiele :
- \Magento\ImportExport\Helper\Report
-\Magento\Cms\Helper\Wysiwyg\Images
Beobachter
Ort :
- \Foo\Bar\Observer
Name :
- *.php
- *Observer.php
Beispiele :
- \Magento\CustomerCustomAttributes\Observer\SalesOrderAddressAfterLoad
-\Magento\CustomerBalance\Observer\ProcessBeforeOrderPlaceObserver
Plugins
Speicherort :
- \Foo\Bar\Plugin
Name :
- *.php
- *Plugin.php
Beispiele :
- \Magento\Catalog\Plugin\Block\Topmenu
- \Magento\PageCache\Model\App\FrontController\BuiltinPlugin
Quelle : http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html#declaring-a-plugin
ConfigProvider
Ort :
- \Foo\Bar\Model
Name :
- *ConfigProvider.php
Beispiele :
- \Magento\Tax\Model\TaxConfigProvider
-\Magento\Payment\Model\IframeConfigProvider
Meine Fragen sind:
- Gibt es irgendwelche
good
/bad
/best
Praktiken dafür inMagento 2
? - Wenn ich
DataProvider
zum Beispiel eine benutzerdefinierte erstellen möchte, welche wird es sein?\Foo\Bar\Provider\CustomDataProvider
\Foo\Bar\DataProvider\Custom
\Foo\Bar\Model\Provider\CustomDataProvider
\Foo\Bar\Helper\Provider\CustomDataProvider
- Wie kann man den Aufbau des Klassennamens und des Speicherorts, eines Ordners im Stammverzeichnis des Moduls, in Model, in Helper usw. bestimmen?
- Kommt es auf die abgerufene Datenquelle / den Datentyp an?
- Wann müssen wir das Suffix zum Klassennamen hinzufügen?
Ein Teil einer Antwort für
Virtual Types
: https://community.magento.com/t5/Magento-DevBlog/Virtual-Types-Naming-Convention/ba-p/61510
quelle
Ich denke, es ist meinungsbasiert, aber ich stimme zu, dass es einige Inkonsistenzen in Bezug auf Klassennamen und Orte in M2 gibt.
Hier ist die Liste, die ich zur Benennung von Ordnern erstellt habe. Für mich sollten Sie diese Ordner immer verwenden, wenn Sie können, um das Durchsuchen und Verstehen Ihres Moduls für andere zu erleichtern:
Darüber hinaus verwendet M2 einige sehr spezifische Ordner, die ich jedoch nicht in diese Liste aufgenommen habe:
Das Gute an M2 ist, dass Sie jeden Ordner verwenden und erstellen können, den Sie benötigen. Wenn etwas nicht in die obige Liste gehört, erstellen Sie einen eigenen Ordner und ordnen Sie Ihre Klassen darin ein. Versuchen Sie einfach, konsistent zu sein.
quelle
Ich denke, die oberste Priorität sollte darin bestehen, den Code so selbstdokumentierend wie möglich zu gestalten. Anstatt alles in Model- oder Helper-Verzeichnissen abzulegen, ist es besser, einen guten Namen zu finden, der beschreibt, was der Code darunter bewirkt. Natürlich ist es auch schwieriger, weil es viel mehr Nachdenken erfordert.
Beispielsweise sagt
Model/Config/Converter.php
der NameOrderStateMachine/TransitionsConfiguration/XmlToArrayConverter.php
viel mehr aus , als dass er verwendet wird , was ein Modul und eine Klasse tun.quelle
Es gibt oben bereits einige wirklich gute Antworten. Was ich hinzufügen möchte, ist, dass Sie vermeiden sollten, Code unter zu platzieren,
app/code
und stattdessen eine composer-basierte Installationsmethode verwenden, die Ihren Code unter zu platzieren endetvendor/
.quelle