2011-01-12 9 views
6

से आगे जाते हैं यह past Stack Overflow question का ढांचा-केंद्रित संस्करण है, जो कि एमवीसी अनुप्रयोगों पर सबसे प्रारंभिक सामग्री मॉडल, विचारों और नियंत्रकों के बीच एक कसौटी युग्मन प्रस्तुत करने के बारे में है। उदाहरण के लिए, आपके पास एक उपयोगकर्ता तालिका होगी जो उपयोगकर्ता नियंत्रक द्वारा संशोधित की जाती है जो बदले में उपयोगकर्ता दृश्य में फ़िल्टर किए गए डेटा को धक्का देती है। यह मेरी धारणा है कि बहुत सारे एमवीसी फ्रेमवर्क इस पैटर्न को प्रतिबिंबित करते हैं। यह सब ठीक है और इसके लिए अच्छा है, लेकिन यह वास्तव में मुझे एचटीएमएल फॉर्म के साथ चीजों की नीरस सूची बनाने और प्रदर्शित करने से परे कुछ भी नहीं ले जाता है।लिथियम ऐप्स जो CRUD

एमवीसी फ्रेमवर्क जो अभी देख रहा है Lithium है, जो चालाक PHP5.3 कोडिंग तकनीकों के केस स्टडी के रूप में काफी दिलचस्प लगता है। एक तरफ, लिथियम में Model वर्ग है जो एक अलग-अलग तालिकाओं के चारों ओर रैपर ऑब्जेक्ट प्रदान करता है, और कुछ सरल प्रश्नों को दूर करता है। दूसरी तरफ, इसे नियंत्रक ऑब्जेक्ट्स पर विधि कॉल करने के लिए रूटिंग यूआरएल का निफ्टी सम्मेलन मिला है, जो तब टेम्पलेट प्रदर्शित करने के लिए प्रस्तुत करता है।

लेकिन इसके बीच में, मुझे अपने आप को एक नुकसान में पाया गया है कि टेबल ए में डेटा से संबंधित सभी रोचक तर्क कहां से संबंधित हैं, जेड के माध्यम से तालिका बी में डेटा से संबंधित है या कम से कम, मुझे यकीन नहीं है इस तरह के तर्क को इस तरीके से कहां रखा जाए जो ढांचे के डिजाइन के अनुरूप है। मेरी समझ के लिए, लिथियम का Model अमूर्त कुछ पंक्ति-स्तर सम्मिलित/अद्यतन/बॉयलरप्लेट को हटाने से अधिक कुछ नहीं करता है, और नियंत्रक/दृश्य आर्किटेक्चर ज्यादातर उपयोगकर्ता इंटरफ़ेस के बारे में लगता है। मैं यूआरएल अनुरोधों से रूटेड फ़ंक्शन कॉल प्राप्त करने वाले Controller कक्षा में बहुत से व्यवसाय तर्क नहीं डालना चाहता हूं।

मेरा वृत्ति मेरे स्वयं के कोड के समूह के साथ अंतर को भरना होगा जो ढांचे के बाहर पूरी तरह से कम या कम मौजूद है। मुझे यकीन नहीं है कि मुझे उससे अधिक उम्मीद करनी चाहिए, लेकिन लिथियम में बाकी सब कुछ कितनी कठोर रूप से संरचित है, यह किसी भी तरह से असंतुष्ट महसूस करता है, जैसे कि मैंने अपने बॉयलरप्लेट-कमी कोड को केवल स्रोत के स्रोत के बिना उछालने के ऊपरी हिस्से को घुमाया होगा एक बड़ा ढांचा।

मुझे यहां क्या याद आ रही है? क्या इस प्रकार के ढांचे का उपयोग करने के लिए एक अनुशंसित वास्तुकला या दर्शन है?

+1

उबाऊ विषय पर +1 दिलचस्प प्रश्न। इसके बारे में ज्यादा जानकारी नहीं है, लेकिन लिथियम पीएमवीसी संरचित (मॉडल = डेटाबेस) लगता है और समाधान शायद [इसे ओआरएम जैसे डॉक्टरेट के साथ उपयोग करें] (http://marianoiglesias.com.ar/li3-lithium/building- एक ब्लॉग-साथ-लिथियम और सिद्धांत /)। लेकिन शायद @NateAbele अधिक जवाब दे सकता है। – mario

उत्तर

8

लिथियम के साथ आपको याद रखना एक बात यह है कि अभी तक कोई उत्पादन तैयार रिलीज नहीं है (हालांकि कुछ साइटें इसे उत्पादन में उपयोग कर रही हैं)। मुख्य लापता सुविधा अभी मॉडल संबंध है। जगहों पर संबंधों के साथ मुझे लगता है कि आपके प्रश्न का आंशिक रूप से उत्तर दिया जाएगा क्योंकि यह अधिक जटिल अनुप्रयोग बनाने की बड़ी तस्वीर में एक महत्वपूर्ण ईंट है। आप एक्स-डेटा शाखा देख सकते हैं जहां संबंधों पर काम चलाना चाहिए।

डोमेन तर्क लिखने के दूसरे भाग के लिए सरल जवाब "मॉडल में" है। उदाहरण के लिए this (rather useless) example of extending model functionality देखें। ओपन सोर्स मिनी एप्लिकेशन एनालॉगू देखने के लिए एक और उदाहरण है जो उपयोग में लिथियम के कुछ काम करने वाले खुले उदाहरणों में से एक है। Analogue model class थोड़ा और मांसपेशियों का मॉडल दिखाता है।

और अंततः एम, वी और सी के बीच बिंदुओं को जोड़ने का मामला एक लिथियम नियंत्रक मुख्य रूप से मॉडलों पर नौकरियों का प्रतिनिधि होना चाहिए, और यदि आवश्यक हो तो इनपुट डेटा को पुन: स्थापित करना चाहिए। पोस्ट मॉडल, पोस्टकंट्रोलर और विचार/पोस्ट/ऐड, इंडेक्स इत्यादि के सरल उदाहरण यह नहीं है कि आपको केवल पोस्ट :: सभी() होना चाहिए। पोस्ट कंट्रोलर :: दृश्य टिप्पणी मॉडल का एक सेट लोड करने की आवश्यकता है।

तो आप निश्चित रूप से वहां अपना बहुत सी कोड टॉस करेंगे! अन्यथा यह एक आवेदन का अधिक नहीं होगा। लेकिन डोमेन तर्क को उस मॉडल से बंधे रखें जहां यह प्राकृतिक है।

  • कि ब्लॉग पोस्ट को सत्यापित करना होगा एक अद्वितीय शीर्षक है? एक वैधकर्ता लिखें।
  • यह सुनिश्चित करने की आवश्यकता है कि उपयोगकर्ता के पास पोस्ट तक पहुंच है? सेव विधि को ओवरराइड करें और इसे सत्यापित करें, या इसे फ़िल्टर करें।

लेकिन मुझे लगता है कि हमें संबंधों के लिए इंतजार करना होगा और 1.0 रिलीज होने से पहले हम पूरी तरह से निर्णय ले सकते हैं कि लिथियम में संरचनात्मक अनुप्रयोगों को कैसे हल किया जा सकता है।

+0

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

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