2011-10-10 10 views
7

मैं वर्षों से कोडिंग कर रहा हूं और खुद को निराशा के बिंदु में पाया है। मैं एक नई वेब आधारित सेवा पर काम कर रहा हूं जिसमें यूआई भी है और इसे ग्राउंड अप से विकसित किया जाएगा। यह कुछ ओपन सोर्स घटकों का उपयोग करेगा, लेकिन मुख्य रूप से अपने आप में एक नई बात है।वेब आधारित इन्फोसिसस्टमेंट के लिए PHP/जावास्क्रिप्ट डिज़ाइन पैटर्न

लेकिन यहां मेरी समस्या है।

  • पीएचपी बैकएंड
  • एचटीएमएल विचारों
  • सीएसएस शैलियों
  • जावास्क्रिप्ट सामने के अंत
  • AJAX अतुल्यकालिक कनेक्शन

मैं चाहता हूँ: एक ऐसी प्रणाली का निर्माण उन घटकों के सभी निर्माण का मतलब उनमें से सभी एक ही 'पैटर्न' का पालन करने के लिए, इस तरह से सिस्टम में एक मॉड्यूल में एक फ़ोल्डर या फाइलों का सेट होता है जो उन सभी को शामिल करता है उस मॉड्यूल के भीतर अजनबियों।

लेकिन मुझे आर्किटेक्चर प्राप्त करने में कठिन समय हो रहा है ताकि मैं इसे चाहूंगा। यहां मेरे पास अब तक है:

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

लेकिन मैं वास्तव में गंदे महसूस करता हूं- मुख्य प्रक्रिया को प्रक्रियात्मक तरीके से बनाने के लिए। मैंने इसे पहले ओओपी में लिखना शुरू कर दिया था, लेकिन सबकुछ उसी प्रणाली में फिट होने के कारण खुद को सिरदर्द में पाया। यह ओओपी था, लेकिन यह कसकर युग्मित था, जिसे ओओपी तरीके से लिखा गया था, जब मैं वास्तव में स्वतंत्र नहीं था या प्रबंधन करने में परेशानी थी।

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

कोई विचार? यह एक समस्या नहीं होगी अगर यह सिर्फ एक भाषा थी, लेकिन सबकुछ एक साथ काम करने की कोशिश करना सिरदर्द का थोड़ा सा है।

धन्यवाद!

+3

आप PHP चौखटे के हजारों में से किसी शोध किया है/सेमी सिस्टम/आदि? इस बात के कई उदाहरण हैं कि यह कैसे किया जा सकता है। – Mat

+0

अपने प्रश्न का उत्तर देना बहुत मुश्किल है क्योंकि आप कोई वास्तविक समस्या नहीं पेश कर रहे हैं। मैं वर्तमान में इस तरह की एक प्रणाली पर काम कर रहा हूं, लगभग कुछ ही मतभेदों के साथ। मैं एमवीसी/ओओपी का उपयोग कर रहा हूँ। मैं कल्पना नहीं कर सकता कि आप इसे प्रक्रियात्मक रूप से संभालने में कामयाब रहे हैं। मुझे लगता है जब तक कि आपके प्रोजेक्ट में कुछ सीमाएं न हों, ओओपी में कोई समस्या नहीं होनी चाहिए। –

+0

आप एंटरप्राइज़ एप्लिकेशन आर्किटेक्चर के पैटर्न, गोफ पैटर्न, आदि देख सकते हैं और उन्हें स्वयं लागू कर सकते हैं। हालांकि, सबसे आसान, (और सबसे स्पष्ट) उत्तर यह देखने के लिए है कि ढांचे (जो पहले से ही इस _exact_ समस्या का सामना कर चुके हैं) ने इन पैटर्न को लागू किया है और या तो (ए) ढांचे का उपयोग करें या (बी) अपने ऐप में ढांचे के दृष्टिकोण को अनुकूलित करें। अपने चुने हुए प्रतिमान में ओपन-सोर्स फ्रेमवर्क की तलाश करें, देखें कि वे चीजें कैसे करते हैं, और देखें कि आपके ऐप के साथ कौन सा जिब्स है। –

उत्तर

4

http://agiletoolkit.org/ जो भी आप ढूंढ रहे हैं उसे लागू करता है। यह स्रोत कोड http://github.com/atk4/atk4 पर उपलब्ध है ताकि आप वहां से सीख सकें।

creating Agile Toolkit जबकि मैंने कई चीजें सीखीं।

  • डेस्कटॉप सिस्टम को देखें। - कोको, उद्देश्य विंडोज और अन्य ऑब्जेक्ट उन्मुख डेस्कटॉप सिस्टम ने बहुत समय पहले उन समस्याओं को हल किया है। विचार बनाएं, क्रियाएं कनेक्ट करें, कॉल-बैक को परिभाषित करें। यह HTML-templated विचारों, जावास्क्रिप्ट बाइंडिंग और AJAX अनुरोधों में मानचित्र करता है।

  • रनटाइम ऑब्जेक्ट ट्री। Agile Toolkit में, पहला चरण प्रारंभिक है। इस चरण के दौरान वस्तुओं को एक-दूसरे में डाला जाता है। उदाहरण के लिए आप फॉर्म में बटन जोड़ते हैं और पेज में फॉर्म जोड़ते हैं। फिर वहां प्रतिपादन चरण होता है जो हर चीज से एचटीएमएल उत्पन्न करता है। यह बहुत अधिक समझ में आता है कि घटक HTML को गूंजते हैं।

  • jQuery यूआई विजेट्स। उन समस्याओं का उपयोग करना कई समस्याओं को हल करने का एक शानदार तरीका था। Agile Tolokit में दृश्य संबंधित jQuery UI विजेट्स के साथ बात कर सकते हैं।

  • आपके द्वारा वर्णित ऑब्जेक्ट्स Agile Toolkit में "मॉडल" हैं। यदि आप स्टैंड-अलोन संस्करण की तलाश में हैं, तो आप कुछ ओआरएम ढांचे पर भरोसा कर सकते हैं। मैंने इसे अपने आप को दृश्यों के साथ एकीकृत कड़ा कर दिया है।

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

लिंक:

+0

यह वही नहीं है जो मैं ढूंढ रहा हूं, लेकिन यह निश्चित रूप से ब्लोटेड फ्रेमवर्क की तुलना में मेरे मन में जो कुछ है, उसके करीब है। – kingmaple

2

कुछ और बिना जाने , मेरे विचार:

  • आप अपने OOP कोड पसंद नहीं आया, तो आप शायद गलत यह बनाया गया है। ऑब्जेक्ट ओरिएंटेशन के साथ विचार यह है कि वस्तुएं स्वाभाविक रूप से चीजों का प्रतिनिधित्व करती हैं और इस तरह उन्हें निपटने के लिए काफी दर्दनाक होना चाहिए। यदि यह युग्मन है जिसे आप पसंद नहीं करते हैं, तो इसे ठीक करने के लिए तकनीकें हैं।
  • ऐसा लगता है जैसे आपका एमवीसी पैटर्न गलत है। एचटीएमएल/सीएसएस/जावास्क्रिप्ट सामान सभी को पहलू पहलू में संभाला जाना चाहिए। ऐसा लगता है कि आपने दूसरों को अनदेखा करते समय कुछ एमवीसी सिद्धांतों का उपयोग किया है। बेशक, आपके कोड के बिना यह केवल एक संदेह हो सकता है।
+0

अच्छा, यह निर्भर करता है। एमवीसी, सबसे क्लासिक अर्थ में, आम तौर पर लोग इसे कैसे कार्यान्वित करते हैं उससे अलग है। जावास्क्रिप्ट और ब्राउज़र एक नियंत्रक हैं, एक दृश्य नहीं। लेकिन एक तरफ, मेरी मुख्य समस्या यह थी कि मेरे पास मुख्य इंजन के लिए यह विशाल एकल वर्ग था, जो कि व्यर्थ था, क्योंकि सबकुछ उस पर निर्भर था। मैंने हमेशा महसूस किया है कि यदि कक्षा का एक उदाहरण है (और कभी भी एक से अधिक नहीं हो सकता है), तो यह पहले स्थान पर नहीं होना चाहिए। – kingmaple

+0

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

+0

लेकिन आप मुझे देखने के लिए क्या सिफारिश कर सकते हैं? क्योंकि मैं एक ऐसे सिस्टम को चाहता हूं जिसमें मुख्य घटक हों (जैसे मुख्य सीएसएस फ़ाइल, PHP और जावास्क्रिप्ट/AJAX के साथ मुख्य कार्य लाइब्रेरी के साथ-साथ सीएसएस फ़ाइल, पुस्तकालयों और जावास्क्रिप्ट/AJAX प्रति मॉड्यूल मांग पर)। मैं जितना संभव हो उतना कम पदचिह्न चाहता हूं, जबकि प्रत्येक मॉड्यूल स्वतंत्र रूप से काम कर सकता है। अब मैं मानता हूं कि मॉड्यूल को मुख्य वर्ग के वर्गों को विस्तारित किया जाना चाहिए, लेकिन इसके लिए एक आर्किटेक्चर कैसे बनाया जाए? भगवान वर्ग में अगर हल नहीं किया जाएगा? मुझे बस कुछ मार्गदर्शन की आवश्यकता है, क्योंकि मैं समझौता नहीं करना चाहता हूं :) – kingmaple

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