2011-08-09 7 views
6

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

Models अकेले होने से, अब मैं अपने आवेदन के साथ काम करने में Collections, Entities, DataMappers & Repositories है। निश्चित रूप से पूर्ण अलगाव और मॉड्यूलरिटी, लेकिन अब मेरी निर्देशिका संरचना कुछ भी पूरी तरह से गड़बड़ नहीं है!

जैसा कि मैंने पहले कभी डीडीडी-एप्लिकेशन के साथ काम नहीं किया है, मुझे अपनी फ़ाइल संरचना को व्यवस्थित करने के बारे में बहुत कम विचार नहीं है।

नीचे एक उचित निर्देशिका संरचना होगी?
नोट: मैं PHP5 का उपयोग कर रहा हूं, लेकिन मुझे इस प्रश्न को भाषा-अज्ञेयवादी के करीब होने का अनुमान है।

/application 
    /common 
     /libraries 
     /helpers 
    /temp 
     /cache 
    /domain 
     /collections 
     /entities 
     /datamappers 
     /repositories 
    /ui 
     /controllers 
     /view 

उत्तर

5

मुझे लगता है कि समझ में आता है लगता है, लेकिन है कि में अपने मॉड्यूल को अलग करने के क्या परत वे पर कर रहे हैं, बल्कि उसके बाद क्या वे कर जा रहा है। उदाहरण के लिए, इस संरचना में, यदि आप एक प्रमाणीकरण और मुद्रण मॉड्यूल चाहता था, तो आप शायद कुछ इस तरह होगा:

/common 
     /helpers 
      /Authentication 
       /AuthenticationService.php 
      /Printing 
       /PrintingService.php 
    /domain 
     /entities 
      /Authentication 
       /Identity.php 
      /Printing 
       /Printer.php 
     /datamappers 
      /Authentication 
       /IdentityDataMap.php 
      /Printing 
       /PrinterDataMap.php 

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

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

/domain 
     /Printing 
      /entities 
      /datamappers 
      /repositories 
     /Auth 
      /entities 
      /datamappers 
      /repositories 
    /ui 
     /controllers 
     /view 
+6

आप अपनी मूल्य वस्तुएं कहां रखेंगे? – n3wb