2009-04-17 12 views
6

मैं फिलहाल PHP का उपयोग करते समय पसंद के रूपरेखा के रूप में कोडइग्निटर का उपयोग करता हूं। जिन चीजों में मैं कुश्ती कर रहा हूं उनमें से एक "पृष्ठ" का विचार है, और एमवीसी के भीतर इसे सही तरीके से कैसे प्रस्तुत करना है। मेरे ज्ञान के लिए, कोडइग्निटर के पास एक फ्रंट कंट्रोलर है जो पृष्ठ नियंत्रकों को प्रतिनिधि करता है। मेरी विचार प्रक्रिया में, प्रत्येक पृष्ठ के पास इसका स्वयं का नियंत्रक होगा। मैं अक्सर कई तरीकों से भरा पृष्ठ नियंत्रक का उपयोग कर किसी को देखता हूं। तो उस अर्थ में, प्रत्येक क्रिया इसका अपना पृष्ठ बन जाती है।एमवीसी में पारंपरिक "पेज" अवधारणा को परिभाषित करता है?

मुझे कभी भी एक नियंत्रक में कई विधियों को भरने का विचार पसंद नहीं आया है, क्योंकि ऐसा लगता है कि एक समय में नियंत्रक में केवल एक विधि या दो की आवश्यकता होने पर बहुत अधिक ओवरहेड होगा। यह प्रत्येक पृष्ठ के लिए अपने स्वयं के नियंत्रक के लिए अधिक उचित लगता है, और कार्य केवल उस विशेष पृष्ठ पर कुछ ऐसा करने के अनुरूप होंगे जो आप कर सकते हैं। क्या मैं इस बारे में गलत तरीके से सोच रहा हूं?

इससे और अधिक भ्रमित करने वाला क्या है, मैं कुछ वेब अनुप्रयोगों में ध्यान दूंगा जहां उनके पास एक नियंत्रक होगा जिसमें एकाधिक विधियां होंगी (यानी लॉगिन, रजिस्टर, देखें, संपादित करें, आदि), लेकिन फिर वास्तव में उनके पास एक लॉगिन नियंत्रक, और एक रजिस्टर नियंत्रक। "पेज नियंत्रक" का उचित उपयोग क्या है?

उत्तर

7

किसी डोमेन परिप्रेक्ष्य से मैं निश्चित रूप से कहता हूं कि प्रति डोमेन संदर्भ में 1 नियंत्रक होने के लिए यह अधिक समझ में आता है। प्रति पृष्ठ एक जरूरी नहीं है हालांकि संदर्भ के आधार पर यह मामला हो सकता है। संदर्भ से मेरा क्या मतलब है "क्रियाएं जो निकट से संबंधित हैं"।

उदाहरण के लिए एक खाता नियंत्रक लॉगिन, पंजीकरण, लॉगआउट, पासवर्ड बदलने, कार्यों को संभालना चाहिए। वे सभी "खाता"

उदाहरण के लिए स्टैक ओवरफ्लो के संदर्भ में रहते हैं। मेरे पास एक "प्रश्न" नियंत्रक होगा जिसमें प्रदर्शन क्वेस्टियन, AskQuestion, प्रश्न हटाएं, अधिकांश प्रतिक्रिया प्रश्न इत्यादि होंगे। वे सभी अलग-अलग "दृश्य/पृष्ठ" हैं जिन्हें एक नियंत्रक द्वारा प्रबंधित किया जाता है।

1

आप सही हैं कि नियंत्रक में प्रत्येक सार्वजनिक विधि "पृष्ठ" बन जाती है। ऐसा कहा जा रहा है कि यह एक वेब पेज नहीं है, एक कार्रवाई डेटा का एक पोस्ट हो सकती है और फिर किसी अन्य क्रिया/पृष्ठ पर रीडायरेक्ट कर सकती है, इसलिए पेज का अर्थ "वेब पेज" नहीं है।

एमवीसी चीजों को काम करने के लिए कई सम्मेलनों का उपयोग करता है। उदाहरण के लिए, प्रत्येक नियंत्रक को "नियंत्रक" के साथ समाप्त होना चाहिए। तो उपयोगकर्ता पृष्ठों का एक सेट (बनाएं, संपादित करें, हटाएं, आदि) उपयोगकर्ता नियंत्रक में होंगे। दृश्य फ़ोल्डर में, नियंत्रक वर्ग के भीतर प्रत्येक सार्वजनिक विधि या क्रिया एक फ़ोल्डर के भीतर एक वेब पेज बन जाती है जो नियंत्रक के उपसर्ग से मेल खाता है (इस मामले में, उपयोगकर्ता फ़ोल्डर)। तो नियंत्रक वर्ग के भीतर "हटाएं" नामक एक क्रिया उपयोगकर्ता फ़ोल्डर में Delete.aspx पृष्ठ को इंगित करेगी।

यह उन सभी विधियों को एक वर्ग में रखने के लिए थोड़ा अजीब लगता है, लेकिन यह आपके ऑब्जेक्ट के आधार पर कार्यक्षमताओं जैसे आयोजन का अच्छा काम करता है।

+1

प्रत्येक नियंत्रक के बारे में आपका बिंदु "नियंत्रक" के साथ समाप्त होना चाहिए केवल एएसपी.नेट एमवीसी ढांचे पर लागू होता है और आवश्यक रूप से वह PHP ढांचे के साथ काम नहीं करता है। – Micah

1

एमवीसी में, एक 'पृष्ठ' वह होता है जब आप तीनों को एक साथ रखते हैं। मॉडल डेटा परत को संभालता है, दृश्य वास्तविक एचटीएमएल को देखता है जो उपयोगकर्ता देखता है और नियंत्रक तय करता है कि वांछित डेटा दिखाने के लिए वे एक साथ कैसे इंटरफ़ेस करते हैं। एक मौजूदा नियंत्रक के लिए एक अलग नियंत्रक या किसी अन्य विधि का उपयोग करने के रूप में मेरी पसंद है कि मेरे पास अन्य नियंत्रक (ओं) के लिए ऑपरेशन कितना करीब है। मान लें कि मैं UserAdmin नियंत्रक रखना चाहता था, अब यह संभवतः उपयोगकर्ता को जोड़ने, उपयोगकर्ता को हटाने, पासवर्ड बदलने आदि को संभालने में सक्षम होगा। यदि मैं किसी कार्यक्षमता को जोड़ रहा था जो किसी उपयोगकर्ता के खाते को किसी तरह से बदलने के साथ निपटाता है तो मैं इसे अधिकतर रखूंगा वहाँ पर। अगर मैंने उन्हें अपने स्वयं के नियंत्रक में अलग कर दिया था तो मैं स्वाभाविक रूप से एक और जोड़ दूंगा। नियंत्रक आपको समान कार्यों को एकसाथ घर बनाने की इजाजत देते हैं ताकि वे पहले से ही किए गए कार्यों को फिर से बनाने के बजाय कक्षा में पहले से ही क्या लाभ उठा सकें। इसमें बहुत कुछ है कि प्रोग्रामर सोचता है कि इसे कैसे किया जाना चाहिए।आपको समझ में आता है कि मुझे समझ में नहीं आ रहा है, यह डेवलपर (या डिजाइनर) पसंद है।

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