इसके अलावा प्रस्तुति-अमूर्त नियंत्रण और अन्य पैटर्न है कि कर रहे हैं Drupal कोर में प्रयोग किया जाता है, वहाँ किसी भी अन्य डिजाइन पैटर्न प्रमुखता से अधिक में इस्तेमाल कर रहे हैं लोकप्रिय योगदान मॉड्यूल इस तरह के दृश्य, CCK, और विशेषताएं के रूप में?
इसके अलावा प्रस्तुति-अमूर्त नियंत्रण और अन्य पैटर्न है कि कर रहे हैं Drupal कोर में प्रयोग किया जाता है, वहाँ किसी भी अन्य डिजाइन पैटर्न प्रमुखता से अधिक में इस्तेमाल कर रहे हैं लोकप्रिय योगदान मॉड्यूल इस तरह के दृश्य, CCK, और विशेषताएं के रूप में?
जवाबों:
शुरू करने के लिए एक जगह कोर ही है और पैटर्न कंट्राब के संपर्क में है। - लैरी गारफील्ड (क्रेल) द्वारा एक महान लेखन ड्रुपल वॉचडॉग लेख में पाया जा सकता है ।
प्रेक्षकों, आगंतुकों, और झांकने वाले टोम्स
द्रुपाल वास्तव में ऑब्जर्वर और विज़िटर के जुड़वां पैटर्न पर बनाया गया है, हालांकि यह उन्हें नाम से नहीं बुलाता है। इसके बजाय, यह उन्हें हुक कहता है।
hook_node_load()
,hook_user_login()
और इसके आगे, संक्षेप में, नोड्स और उपयोगकर्ताओं पर पर्यवेक्षक हैं।hook_form_alter()
,hook_node_view()
और इसके आगे, संक्षेप में, आगंतुक हैं। क्योंकि द्रुपाल दोनों के बीच अंतर नहीं करता है, कुछ हुक यकीनन दोनों पैटर्न माना जा सकता है लेकिन सिद्धांत समान है।कारखानों और आदेशों
फ़ैक्टरी पैटर्न पर कई भिन्नताएं हैं, लेकिन वे सभी एक ही विचार के लिए उबलते हैं: एक वस्तु, एक ग्राहक, एक अन्य वस्तु, एक कारखाने, को तर्क के एक उचित कार्यान्वयन के लिए पूछता है, लेकिन इसकी परवाह नहीं करता है । फ़ैसला करना फ़ैसले पर निर्भर है।
db_insert()
फ़ंक्शन पर विचार करें , जिनमें से महत्वपूर्ण बिट्स नीचे दिखाए गए हैं:function db_insert($table, array $options = array()) { // ... return Database::getConnection($options['target'])->insert($table, $options); }
Database::getConnection()
विधि एक कारखाने कि इस साइट के लिए एक कनेक्शन वस्तु उचित रिटर्न है।डॉक्टर द्रुपाल की निर्भरता इंजेक्शन
Drupal 6 में, मेनू सिस्टम को बहु-चरणीय प्रक्रिया होने के लिए फिर से लिखा गया और फिर से लिखा गया। अब हम इस तरह से एक ही पेज कॉलबैक लागू करेंगे:
function example_menu() { $items['node/%node/example'] = array( 'page callback' => 'example_page', 'page arguments' => array(1), // ... ); return $items; } function example_page($node) { // Do useful stuff here. }
इस नए सेटअप में मेनू राउटर अधिक जटिल हो जाता है। बदले में, हालांकि, पेज कॉलबैक को नोड मिलता है, जिस पर यह निर्भर करता है कि इसे पास किया गया है, अर्थात् इसमें इंजेक्ट किया गया है। इससे हमें कई लाभ मिलते हैं।
ब्रोके (आर) के लिए जाओ
एक सामान्य दृष्टिकोण ब्रोकर या मध्यस्थ के विचार पर कुछ भिन्नता है। इस डिज़ाइन में, एक ऑब्जेक्ट किसी अन्य ऑब्जेक्ट से सीधे जानकारी का अनुरोध नहीं करता है। इसके बजाय यह एक मध्यस्थ वस्तु को पूछता है, जिसे इसमें इंजेक्ट किया जा सकता है, अपनी ओर से ऐसा अनुरोध करने के लिए। हालांकि यह अभी भी मतलब है कि पहली वस्तु को सक्रिय रूप से जानकारी का अनुरोध करना है, यह केवल मध्यस्थ ऑब्जेक्ट के लिए कसकर युग्मित है और अन्य वस्तुओं के असंख्य के लिए नहीं यह से जानकारी का अनुरोध करने की आवश्यकता हो सकती है। इसका मतलब है कि अगर वे अन्य प्रणालियां बदलती हैं तो हमें केवल मध्यस्थ को अपडेट करने की जरूरत है, न कि हर प्रणाली जो इसे छूती है।