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 *
$productIds
yerine 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)
Mysql4
sı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.json
konuş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
( 0
beklendiğ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ş ASC
vs 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_product
niteliklerinden Magento 1.5 ve 1.9 arasında bir yerde değişmiş 10
iç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)