जब आप $front->setParam
का उपयोग कर रहे हैं, तो आप फ्रंट कंट्रोलर में पैरामीटर को परिभाषित कर रहे हैं।
लेकिन यह पैरामीटर (या इसका उपयोग नहीं किया जाना चाहिए) मॉडल के अन्य परतों जैसे मॉडल में उपलब्ध नहीं है।
Zend_Registry
, किसी अन्य वैश्विक चर की तरह, आपके आवेदन में कहीं से भी उपलब्ध है - मॉडल के अंदर भी।
लेकिन वैश्विक चर का एक समूह के बजाय एक रजिस्ट्री का उपयोग कर यह सुनिश्चित करता है कि आप कई वैश्विक चर हर जगह नहीं होगी, जो भले ही एक रजिस्ट्री का उपयोग कर कुछ वैश्विक राज्य का तात्पर्य (जो कि अच्छा नहीं है, एक कहना चाहिए), यह यह सब एक ही स्थान पर बेहतर है।
वास्तविक जीवन उदाहरण के एक जोड़े को हो सकता है:
- स्टोर डेटाबेस है, जो bootsreap में स्थापित किया गया है, लेकिन मॉडल
- विश्व स्तर पर प्रयोग किया जाता है एक एडाप्टर स्टोर करने के लिए कनेक्शन (या किसी भी mecanism) जिसका उपयोग आपके आवेदन की सभी परतों में अनुवाद/स्थानीयकरण करने के लिए किया जाएगा - ज़ेंड फ्रेमवर्क स्वयं ही करता है।
अंत में, मैं Zend_Registry
उपयोगी पाते हैं?
ठीक है, जब कुछ वैश्विक स्थिति होने की बात आती है, हाँ, यह उपयोगी है।
लेकिन यदि इसका उपयोग टाला जा सकता है, तो यह बेहतर हो सकता है: अवधारणात्मक रूप से बोलना, आपकी कक्षा किसी भी वैश्विक स्थिति पर निर्भर नहीं है बेहतर: पुन: उपयोग करने में आसान, परीक्षण करने में आसान, ...
इसके बारे में, आप Dependency Injection पर एक नज़र डालना चाहते हैं।
स्रोत
2010-03-27 22:36:16
आपको 'Zend_Registry :: getInstance() '-singelton से' Zend_Registry' को अलग करना चाहिए। क्लास को वैश्विक रूप से जेडएफ में आंतरिक रूप से इस्तेमाल किया जाता है, इसलिए 'ज़ेंड_ रजिस्ट्री'! = वैश्विक। – chelmertz