Uzantınızı satarsanız veya başkalarıyla paylaşırsanız, insan tarafından okunabilen bir kod yazmayı düşünün.
- yöntemi çok karmaşık hale getirme
- DOC bloklarını yöntemlerine ekle *
$productIdsyerine uygun değişken isimleri kullanın.$ids
- Metodları için aynı,
public function myOnProductSaveMethod() {...}diyor ki ... hiçbir şey, ama tryDisableInternetOnProductSave()istediği planlanan bir ipucu verecek
- mantıklı olan yerlerde ipucu kullanın
someMethod(Varien_Data_Db_Collection $collection)
- sihirli sayılardan ve karakterlerden kaçınmak **
- Eğer modeller gözlemci tarafından daha erişilebilir olmasını sağlamak için set set
$_eventPrefixözelliğini (ve $_eventObject) kullanıyorsanız,
- sistem yapılandırma alanları eklerseniz
- varsayılan değerleri
config.xml
<validate>alanlara düğüm eklesystem.xml
- ACL kaynakları eklemek
adminhtml.xml
- yararsız / reklam yapan birinci sınıf menü girişlerini yönetici arka uçlarına eklemeyin - üst çubuğa veya yapılandırma bölümlerine
- Tüm denetleyici eylemleri için ACL kaynakları ekleyin (katliamlar da var!)
- Sorgularınızın DB tablo önekleriyle çalışmasını sağlayın
- (hayır) geriye dönük uyumluluk hakkında düşün (bu gerçekten görüşe dayalıdır)
Mysql4sınıfları desteklemiyor
- kullanımdan kaldırılan yöntemleri kullanmayın
- istisnanızın her durumda beklendiği gibi çalışmasını sağlayın - UnitTests ekleyin (örneğin, PhpUnit)
- David Manners'a ek olarak ...
composer.jsonkonuşlandırmayı kolaylaştırmak için bir de ekleyin
- PHP5.6 EOL olduğundan, PHP7 kodunuzu yazın. Giriş
declare(strict_types=1);ve çıkış türlerinizi kullanın ve tanımlayın
- Magento2: Statik kod ile kodunuzu kontrol gibi araçlar analiz phpstan . Burada sihirli yöntemler için destek . (En son 2.1 / 2.2 için önce 2.3 ile çalışır) - phpstan 0.8.5 gerektirir)
* DOC blokları:
Magento-1 kodunuzu PSR2 standardı veya PHPMD için PHP_CodeSniffer ile kontrol ediyorsanız, belki bu satırları eklemek isteyebilirsiniz (mantıklı olduğu yer) ...
- sınıflara
@phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
@phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore - kalıtsal özellikler
@phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
@SuppressWarnings(PHPMD.CamelCaseClassName)
@SuppressWarnings(PHPMD.CamelCasePropertyName) - kalıtsal özellikler
- yöntemlere
@SuppressWarnings(PHPMD.CamelCaseMethodName) - kalıtsal yöntemler
@SuppressWarnings(PHPMD.StaticAccess)- Mage::veya başka bir statik arama kullanıyorsanız
** Sık kullanılan:
- yönetici mağaza kimliği
0 > Mage_Core_Model_App::ADMIN_STORE_ID
- ürün
status
1 > Mage_Catalog_Model_Product_Status::STATUS_ENABLED
2> Mage_Catalog_Model_Product_Status::STATUS_DISABLED ( 0beklendiği gibi değil )
- ürün
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
- ürün
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
SQL sipariş ASCvs aynı Zend_Db_Select::SQL_ASC (örneğin) .
Diyen "her zamankinden asla değişmeyecek çünkü o gereği yok" ? Örneğin için varlık kimliği catalog_productniteliklerinden Magento 1.5 ve 1.9 arasında bir yerde değişmiş 10için 4, bu nedenle bu uzantıyı kırabilir:
$collection->addFieldToFilter('entity_type_id', 10)
Bunun yerine bir sorgu ekler, ancak güvende olursunuz ...
$entityTypeId = Mage::getModel('eav/config')
->getEntityType(Mage_Catalog_Model_Product::ENTITY)
->getEntityTypeId();
$collection->addFieldToFilter('entity_type_id', $entityTypeId)