Di Magento 1
kami terbiasa menempatkan kelas kami di direktori ini
- Blok
- Pembantu
- Model
- Sumber
dan menggunakan nama kelas sederhana tanpa huruf kapital di tengah nama.
Jika kita melihat beberapa kasus di Magento 2 Core
Pembantu
Lokasi :
- \Foo\Bar\Helper
Nama :
- *.php
Contoh :
- \Magento\ImportExport\Helper\Report
-\Magento\Cms\Helper\Wysiwyg\Images
Pengamat
Lokasi :
- \Foo\Bar\Observer
Nama :
- *.php
- *Observer.php
Contoh :
- \Magento\CustomerCustomAttributes\Observer\SalesOrderAddressAfterLoad
-\Magento\CustomerBalance\Observer\ProcessBeforeOrderPlaceObserver
Plugin
Lokasi :
- \Foo\Bar\Plugin
Nama :
- *.php
- *Plugin.php
Contoh :
- \Magento\Catalog\Plugin\Block\Topmenu
- \Magento\PageCache\Model\App\FrontController\BuiltinPlugin
Sumber : http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html#declaring-a-plugin
ConfigProvider
Lokasi :
- \Foo\Bar\Model
Nama :
- *ConfigProvider.php
Contoh :
- \Magento\Tax\Model\TaxConfigProvider
-\Magento\Payment\Model\IframeConfigProvider
Pertanyaan saya adalah:
- Jika ada
good
/bad
/best
praktik untuk itu di dalamMagento 2
? - Jika saya ingin membuat custom
DataProvider
misalnya apakah itu?\Foo\Bar\Provider\CustomDataProvider
\Foo\Bar\DataProvider\Custom
\Foo\Bar\Model\Provider\CustomDataProvider
\Foo\Bar\Helper\Provider\CustomDataProvider
- Bagaimana menentukan konstruksi nama kelas dan lokasi, folder di akar modul, di Model, di Helper, dll?
- Apakah itu tergantung pada sumber data yang diambil / tipe data?
- Kapan kita harus menambahkan akhiran ke nama kelas?
Bagian dari respons untuk
Virtual Types
: https://community.magento.com/t5/Magento-DevBlog/Virtual-Types-Naming-Convention/ba-p/61510
sumber
Saya rasa itu berdasarkan pendapat tetapi saya setuju bahwa ada beberapa inkonsistensi mengenai penamaan kelas dan lokasi di M2.
Inilah daftar yang saya buat tentang penamaan folder. Bagi saya Anda harus selalu menggunakan folder-folder itu ketika Anda bisa agar modul Anda lebih mudah dijelajahi dan dipahami orang lain:
Selain itu, M2 menggunakan beberapa folder yang sangat spesifik tetapi saya belum memasukkannya dalam daftar ini:
Hal yang baik dengan M2 adalah Anda dapat menggunakan dan membuat folder apa pun yang Anda butuhkan. Jika ada sesuatu yang tidak termasuk dalam daftar di atas, buat folder Anda sendiri dan letakkan kelas Anda di dalamnya hanya mencoba untuk konsisten.
sumber
Saya pikir prioritas utama seharusnya membuat kode mendokumentasikan diri sendiri mungkin. Jadi, alih-alih memasukkan semuanya ke dalam direktori Model atau Helper, menemukan nama baik yang menggambarkan apa yang dilakukan kode di bawahnya adalah pendekatan yang lebih baik. Tentu saja, ini juga lebih sulit karena membutuhkan banyak pemikiran.
Sebagai contoh, daripada menggunakan
Model/Config/Converter.php
, namaOrderStateMachine/TransitionsConfiguration/XmlToArrayConverter.php
mengatakan lebih banyak apa yang Modul dan kelas lakukan.sumber
Sudah ada beberapa jawaban yang sangat bagus di atas. Yang ingin saya tambahkan adalah bahwa Anda harus menghindari menempatkan kode di bawah
app/code
dan alih-alih menggunakan metode instalasi berbasis komposer yang akhirnya akan menempatkan kode Anda di bawahvendor/
.sumber