यदि आप अपना एक्सटेंशन बेचते हैं या इसे दूसरों के साथ साझा करते हैं, तो कोड लिखने के बारे में सोचें जो मानव पठनीय है।
- विधि को बहुत जटिल न बनाएं
- अपने तरीकों से DOC ब्लॉक जोड़ें *
$productIdsइसके बजाय उचित चर नामों का उपयोग करें$ids
- तरीकों के लिए भी यही
public function myOnProductSaveMethod() {...}कहते हैं ... कुछ भी नहीं, लेकिन tryDisableInternetOnProductSave()संकेत देना चाहते हैं योजना बनाई है
- प्रकार संकेत का उपयोग करें जहां यह समझ में आता है
someMethod(Varien_Data_Db_Collection $collection)
- जादू नंबर और तार से बचें **
- यदि आप पर्यवेक्षकों के लिए बेहतर पहुंच के लिए मॉडल सेट
$_eventPrefixसंपत्ति (और $_eventObject) का उपयोग करते हैं
- यदि आप सिस्टम कॉन्फिगर फ़ील्ड जोड़ते हैं
- में डिफ़ॉल्ट मान सेट करें
config.xml
<validate>में फ़ील्ड्स में नोड्स जोड़ेंsystem.xml
- करने के लिए ACL संसाधन जोड़ें
adminhtml.xml
- व्यवस्थापक बैकएंड में बेकार / विज्ञापन प्रथम-स्तरीय मेनू प्रविष्टियों को न जोड़ें - न तो टॉपबार में और न ही कॉन्फ़िगरेशन अनुभागों में
- सभी नियंत्रक क्रियाओं के लिए ACL संसाधन जोड़ें (मालिश भी!)
- सुनिश्चित करें कि आपकी क्वेरीज़ DB तालिका उपसर्गों के साथ काम करती हैं
- के बारे में सोचें (नहीं) पिछड़ी हुई संगति (यह वास्तव में राय आधारित है)
Mysql4वर्गों का समर्थन नहीं करते
- पदावनत विधियों का उपयोग न करें
- हर मामले में अपेक्षा के अनुसार अपने काम को सुनिश्चित करें - UnitTests (उदाहरण के लिए PhpUnit) जोड़ें
- डेविड शिष्टाचार के अलावा ...
composer.jsonतैनाती को आसान बनाने के लिए भी जोड़ें
- चूंकि PHP5.6 EOL है, इसलिए PHP7 के लिए अपना कोड लिखें।
declare(strict_types=1);अपने इन और आउटपुट प्रकारों का उपयोग करें और उन्हें परिभाषित करें
- Magento2: अपने कोड को स्थिर कोड विश्लेषण उपकरणों जैसे कि phpstan के साथ जांचें । यहां जादू के तरीकों के लिए समर्थन । (२.१ के साथ नवीनतम काम करता है, २.१ / २.२ से पहले - taht के लिए phpstan 0.8.5 की आवश्यकता होती है)
* DOC ब्लॉक:
यदि आप PSR2 मानक या PHPMD के लिए PHP_CodeSniffer के साथ अपने Magento-1 कोड की जाँच करते हैं, तो आप शायद इस पंक्तियों को जोड़ना चाहते हैं (जहाँ यह समझ में आता है) ...
- कक्षाओं के लिए
@phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
@phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore - विरासत में मिली संपत्ति
@phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
@SuppressWarnings(PHPMD.CamelCaseClassName)
@SuppressWarnings(PHPMD.CamelCasePropertyName) - विरासत में मिली संपत्ति
- तरीकों के लिए
@SuppressWarnings(PHPMD.CamelCaseMethodName) - विरासत में मिली विधियाँ
@SuppressWarnings(PHPMD.StaticAccess)- यदि आप Mage::या अन्य स्थिर कॉल का उपयोग करते हैं
** अक्सर इस्तमल होता है:
- व्यवस्थापक स्टोर आईडी
0 > Mage_Core_Model_App::ADMIN_STORE_ID
- उत्पाद
status
1 > Mage_Catalog_Model_Product_Status::STATUS_ENABLED
2> Mage_Catalog_Model_Product_Status::STATUS_DISABLED ( 0उम्मीद के मुताबिक नहीं )
- उत्पाद
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
- उत्पाद
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 ऑर्डर ASCबनाम Zend_Db_Select::SQL_ASC (उदाहरण के लिए) के लिए भी ।
यह कहते हुए कि "यह निराशावादी कारण नहीं है कि यह कभी नहीं बदलेगा" ? उदाहरण के लिए के लिए इकाई आईडी catalog_productविशेषताओं से Magento 1.5 और 1.9 के बीच में कहीं बदल 10करने के लिए 4है, तो यह आपका एक्सटेंशन को तोड़ सकते थे:
$collection->addFieldToFilter('entity_type_id', 10)
इसके बजाय इसका उपयोग करना एक क्वेरी जोड़ता है, लेकिन आप सुरक्षित रहेंगे ...
$entityTypeId = Mage::getModel('eav/config')
->getEntityType(Mage_Catalog_Model_Product::ENTITY)
->getEntityTypeId();
$collection->addFieldToFilter('entity_type_id', $entityTypeId)