Jika Anda menjual ekstensi Anda atau membagikannya kepada orang lain, pikirkan tentang menulis kode yang dapat dibaca manusia.
- jangan membuat metode terlalu rumit
- tambahkan blok DOC ke metode Anda *
- gunakan nama variabel yang tepat, seperti
$productIds
bukan$ids
- sama untuk metode,
public function myOnProductSaveMethod() {...}
mengatakan ... tidak ada, tetapi tryDisableInternetOnProductSave()
akan memberikan petunjuk keinginan yang direncanakan
- gunakan petunjuk tipe yang masuk akal
someMethod(Varien_Data_Db_Collection $collection)
- hindari angka ajaib dan string **
- jika Anda menggunakan model, atur
$_eventPrefix
properti (dan $_eventObject
) agar lebih mudah diakses oleh pengamat
- jika Anda menambahkan bidang konfigurasi sistem
- atur nilai default di
config.xml
- tambahkan
<validate>
node ke bidang dalamsystem.xml
- tambahkan sumber daya ACL ke
adminhtml.xml
- jangan tambahkan entri menu tingkat pertama yang tidak berguna / iklan di admin backend - baik di topbar maupun di bagian config
- tambahkan sumber daya ACL untuk semua aksi pengontrol (juga massactions!)
- memastikan kueri Anda berfungsi dengan awalan tabel DB
- pikirkan (tidak) keterbelakangan ke belakang (ini benar-benar berdasarkan pendapat)
- jangan mendukung
Mysql4
kelas
- jangan gunakan metode yang sudah usang
- pastikan ekstensi Anda berfungsi seperti yang diharapkan dalam setiap kasus - tambahkan UnitTests (PhpUnit misalnya)
- selain David Manners ... tambahkan
composer.json
juga untuk membuat penempatan lebih mudah
- karena PHP5.6 adalah EOL, tulis kode Anda untuk PHP7. Gunakan
declare(strict_types=1);
dan tentukan tipe input dan output Anda
- Magento2: periksa kode Anda dengan alat analisis kode statis seperti phpstan . Dukungan untuk metode ajaib di sini . (komit terbaru bekerja dengan 2.3, sebelumnya untuk 2.1 / 2.2 - yang memerlukan phpstan 0.8.5)
* Blok DOC:
Jika Anda memeriksa kode Magento-1 Anda dengan PHP_CodeSniffer untuk standar PSR2 atau PHPMD, Anda mungkin ingin menambahkan baris ini (yang masuk akal) ...
- ke kelas
@phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
@phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
- properti yang diwarisi
@phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
@SuppressWarnings(PHPMD.CamelCaseClassName)
@SuppressWarnings(PHPMD.CamelCasePropertyName)
- properti yang diwarisi
- untuk metode
@SuppressWarnings(PHPMD.CamelCaseMethodName)
- metode yang diwariskan
@SuppressWarnings(PHPMD.StaticAccess)
- jika Anda menggunakan Mage::
atau panggilan statis lainnya
** Sering digunakan:
- ID toko admin
0
> Mage_Core_Model_App::ADMIN_STORE_ID
- produk
status
1
> Mage_Catalog_Model_Product_Status::STATUS_ENABLED
2
> Mage_Catalog_Model_Product_Status::STATUS_DISABLED
(tidak 0
seperti yang diharapkan)
- produk
type
simple
> Mage_Catalog_Model_Product_Type::TYPE_SIMPLE
bundle
> Mage_Catalog_Model_Product_Type::TYPE_BUNDLE
configurable
> Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE
grouped
> Mage_Catalog_Model_Product_Type::TYPE_GROUPED
virtual
> Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL
- produk
visibity
1
> Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE
2
> Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG
3
> Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH
4
> Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH
Sama untuk urutan SQL ASC
vs Zend_Db_Select::SQL_ASC
(misalnya) .
Mengatakan "itu bukan keharusan karena itu tidak akan pernah berubah" ? Misalnya ID entitas untuk catalog_product
atribut yang diubah di suatu tempat antara Magento 1.5 dan 1.9 dari 10
menjadi 4
, jadi ini dapat merusak ekstensi Anda:
$collection->addFieldToFilter('entity_type_id', 10)
Menggunakan ini sebagai gantinya menambahkan satu permintaan, tetapi Anda akan aman ...
$entityTypeId = Mage::getModel('eav/config')
->getEntityType(Mage_Catalog_Model_Product::ENTITY)
->getEntityTypeId();
$collection->addFieldToFilter('entity_type_id', $entityTypeId)