2010-04-27 10 views
5

मुझे पता है कि सब कुछ नियंत्रक के माध्यम से जा रहा है।एमवीसी: मॉडल दृश्य के साथ बातचीत करता है?

लेकिन मैं अक्सर लेख कहता है कि कुछ इस तरह पढ़ें:

  1. उपयोगकर्ता दृश्य
  2. नियंत्रक मॉडल पूछता है अपने राज्य को बदलने के लिए साथ सूचना का आदान
  3. मॉडल दृश्य जब इसकी sate
  4. बदल गया है सूचित करता है

मुझे तीसरा नहीं मिलता है। क्यों कह रहे हैं कि मॉडल दृश्य को सूचित करता है, जब यह वास्तव में नियंत्रक को सूचित कर रहा है और नियंत्रक दृश्य को सूचित कर रहा है?

उत्तर

3

यह एक डेस्कटॉप सिस्टम की तरह लगता है और एक वेबसाइट जैसी स्टेटलेस प्रणाली नहीं है।

लेकिन शायद यह बात कर रहा है कि कुछ लोग दृश्य से मॉडलों से कैसे पूछना पसंद करते हैं उदा।

<?php foreach($usersTableGateway->getUsers() as $user): ?> 
<?php echo $user ?><br> 
<?php endforeach; ?> 

मैं नियंत्रक (नियंत्रक में उन सरणी की तैयारी) में सभी जानकारी प्राप्त करने और नियंत्रक से देखने के लिए इसे पारित के एक प्रशंसक के अधिक रहा हूँ।

+1

+1 इसके साथ सहमत हैं। नियंत्रक '$ टेम्पलेट-> सेट ('उपयोगकर्ता', $ उपयोगकर्ताटेबल गेटवे-> getUsers()) में ऐसा कुछ करना बेहतर है;' – alex

1

मैंने कभी-कभी एमवीसी को इस तरह से वर्णित किया है या इस तरह से खींचा है। मैं यह नहीं कहूंगा कि यह सही है, लेकिन मुझे लगता है कि यह कई कार्यान्वयन से उत्पन्न होता है जो या तो नियंत्रक और मॉडल को स्पष्ट रूप से या स्पष्ट रूप से एक साथ जोड़ता है।

यदि नियंत्रक और मॉडल के बीच ढांचे का वैचारिक अलगाव उतना स्पष्ट नहीं है जितना कि उन्हें होना चाहिए, तो "मॉडल के बारे में बताया गया है जब उसका राज्य बदल गया है" वास्तव में एक नियंत्रक बिट है जो होता है मॉडल में

अंत में, एमवीसी एक दिशानिर्देश है जो ज्यादातर चिंताओं को स्पष्ट अलगाव पर निर्भर करता है। यदि आप जिस ढांचे का उपयोग कर रहे हैं, वह इस तरह से वर्णन करता है ... अच्छा, यह वास्तव में एमवीसी नहीं है। यह काम कर सकता है, लेकिन यह उन तरीकों से भी असफल हो सकता है जो अप्रत्याशित या यहां तक ​​कि ज्ञात नहीं हैं।

2

एमवीसी एक व्यापक अवधारणा है, और संभावित कार्यान्वयन की एक विस्तृत विविधता है। उदाहरण के लिए, पृष्ठ नियंत्रक तर्क से दृश्य को अलग करता है, और इसी तरह फ्रंट फ़ॉन्ट्रोलर भी करता है। प्रत्येक एमवीसी फ्रेमवर्क में दृश्य में मॉडल डेटा को प्रस्तुत करने के लिए अलग-अलग तरीके भी हैं - ज़ेंड उदाहरण के लिए दो-चरण का उपयोग करता है।

आप संभवतः एक दृश्य वस्तु और "मॉडल" (जो अपने आप में एक बहुत जटिल जानवर है) के बीच एक ऑब्जर्वर संबंध सेट कर सकते हैं लेकिन मुझे लगता है MVC पैटर्न के इस पहलू का मूल संदर्भ के साथ क्या करना अधिक है पैटर्न - यानी गैलेन के दृष्टिकोण

1

ऊपर यह MVC सिद्धांतों का उल्लंघन नहीं करता अपने दृश्य के लिए (here देखें) अपने मॉडल के लिए सीधे सुनने। एएसएआईके एमवीसी का एक रॉक-ठोस नियम वास्तव में है कि आपके पास एक वसा, अंधा मॉडल है, जो डेटा और व्यापार तर्क की रक्षा करता है और सिस्टम के अन्य हिस्सों से अनजान है। दृश्य और नियंत्रक कैसे चित्रित होते हैं, और मॉडल के साथ उनके संबंध, कम कठोर रूप से परिभाषित किए जाते हैं।

संबंधित मुद्दे