यदि आप अपना एक्सटेंशन बेचते हैं या इसे दूसरों के साथ साझा करते हैं, तो कोड लिखने के बारे में सोचें जो मानव पठनीय है।
- विधि को बहुत जटिल न बनाएं
- अपने तरीकों से 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)