मैजेंटो कोर में "गैंग ऑफ़ फोर" डिज़ाइन पैटर्न


10

Magento के कोर में उपयोग में कुछ बहुत स्पष्ट पैटर्न हैं, जैसे:

  • एकाकी वस्तु
  • रजिस्ट्री
  • घटना / ऑब्जर्वर
  • फ़ैक्टरी
  • मॉडल / देखें / नियंत्रक

लेकिन ऐसे अन्य लोग हैं जो Magento में उपयोग में हो सकते हैं कि मुझे अभिनेता, सज्जाकार, रणनीति पैटर्न के बारे में पता नहीं है।

क्या Magento में सभी पैटर्न प्रकारों के उपयोग की एक संदर्भ सूची है या तीसरे पक्ष के मॉड्यूल को कैसे लागू किया जाए जो अनावश्यक रूप से Magento की अंतर्निहित कार्यक्षमता को दोहराए नहीं?


1
संक्षिप्त उत्तर: नहीं। लेकिन आप MVC :-)
फैबियन ब्लेस्च्मिड्ट

2
वास्तव में स्टैक ओवरफ्लो पर डिजाइन पैटर्न की एक सूची है (मेरे बुकमार्क में लिंक है :)) - stackoverflow.com/questions/5041473/magento-design-patterns
सर्गेई गुक

सिर्फ इसलिए कि एसओ को वापस लिंक के कारण अपवोट करें।
बेन लेसानी - सोनासी

वाह। यही कारण है कि था वास्तव में मैं क्या देख रहा था। कृपया उत्तर के रूप में पोस्ट करें!
philwinkle

जवाबों:


12

मैगेंटो में स्टैक ओवरफ्लो पर उपयोग किए जाने वाले डिज़ाइन पैटर्न की एक सूची है

लेख से:

स्पष्ट हैं:

फैक्टरी:

$product = Mage::getModel('catalog/product');

सिंगलटन:

$category = Mage::getSingleton('catalog/session');

रजिस्ट्री:

$currentCategory = Mage::registry('current_category');

सहायक देखें:

Mage::helper('core');

प्रोटोटाइप:

Mage:getModel('catalog/product')->getTypeInstance();

ऑब्जेक्ट पूल:

$id = Mage::objects()->save($object);
$object = Mage::objects($id);

इटरेटर:

Mage::getModel('catalog/product')->getCollection();

घटना / श्रोता:

Mage::dispatchEvent('model_load_before', $params);

संपादित करें

सक्रिय रिकॉर्ड

$product->save()
$product->getName()

अशक्त वस्तु

$collection->getFirstItem()

आलसी लोडिंग - संग्रह जब iterated लोड किए जाते हैं

मैग्नेटो में एमवीसी, फ्रंट कंट्रोलर, फैक्ट्री, सिंगलटन और रजिस्ट्री के बारे में रेयान स्ट्रीट ब्लॉग पर 5 लेख भी हैं

संपादित करें
मैं जोड़ सकता हूँ कि Magento के 'सिंगलटन' एक छद्म-सिंगलटन अधिक है। यह 'फैक्ट्री' का संयोजन है क्योंकि Mage :: getSingleton () एक फैक्ट्री और 'रजिस्ट्री' है क्योंकि getSingleton()विधि के अंदर इसे कहा जाता है

self::register($registryKey, self::getModel($modelClass, $arguments))

2
मैं 'सक्रिय रिकॉर्ड' ( $product->save(), $product->getName()...,), 'अशक्त वस्तु' ( $collection->getFirstItem()), 'सामने नियंत्रक', 'आलसी लोडिंग' (संग्रह लोड होने पर लोड किया जाता है) जोड़ सकता है
Marius

@ मैरी उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें।
दार्शनिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.