मैं अंतिम दिनों में DDD (डोमेन प्रेरित डिजाइन) में रुचि हूँ, लेकिन मैं जो बनाता है और संस्थाओं की पुष्टि करता है की जिम्मेदारियों को समझ नहीं सकता। मैं विभिन्न परिदृश्यों को कवर करने के लिए इस प्रश्न को तोड़ देता हूं।DDD - इकाई बनाने और सत्यापन जिम्मेदारी
नियमित इकाई (संभावित रूप से मूल्य वस्तु के साथ)। एक उदाहरण के रूप में एक उपयोगकर्ता को ईमेल द्वारा पहचाना जाता है। मेरे पास एक UserFactory है जो डेटा की एक सरणी प्राप्त करता है (संभवतः फॉर्म POST से), और मुझे एक नई उपयोगकर्ता प्रविष्टि वापस कर देता है। क्या कारखाना डेटा की अखंडता को मान्य कर सकता है (उदा: ईमेल के रूप में दिया गया स्ट्रिंग एक वास्तविक ईमेल है, पासवर्ड फ़ील्ड 1 और फ़ील्ड 2 मैच और पासवर्ड में पासवर्ड)? क्या कारखाना मान्य करेगा कि ऐसा कोई उपयोगकर्ता पहले से मौजूद नहीं है (हम दो उपयोगकर्ताओं को एक ही ईमेल के साथ पंजीकृत नहीं करना चाहते हैं)? यदि हां, तो यह मुझे स्वयं या उपयोगकर्ता रेजॉजिटरी का उपयोग करना चाहिए?
कुल इकाई। आइए मान लें कि हमारे पास एक पोस्ट इकाई और टिप्पणियां संस्थाएं हैं। मैं पद प्राप्त करने के लिए अपने सभी टिप्पणियों के साथ 12 चाहते हैं, तो मैं जैसे
कुछ करना $ पोस्ट = $ postRepository-> getById (12);
कैसे प्राप्त करेंबीआईआईडी लागू की जानी चाहिए? इस तरह:
public function getById($id) {
$postData = $this->magicFetchFromDB($id);
$comments = (new CommentRepository())->getForPost(12);
return new PostEntity($postData, $comments);
}
या हो सकता है की तरह आलसी के लिए पोस्ट जिम्मेदार अपनी टिप्पणी बनाने, कुछ:
class PostEntity {
public function getComments() {
if(is_null($this->_comments)) $this->_comments = (new CommentRepository())->getForPost($this->_id);
return $this->_comments;
}
}
? मैं यहां बहुत खो गया हूं और PHP में डीडीडी के उदाहरणों के साथ पर्याप्त जानकारी नहीं है, इसलिए किसी भी मदद की सराहना की जाएगी!
आप एक बहुत, skwee धन्यवाद।
आपकी टिप्पणी के लिए धन्यवाद! ए) मैं इकाई में सत्यापन डालने के बारे में निश्चित नहीं हूँ। क्या आप कैप्चा को व्यावसायिक तर्क का हिस्सा मानने पर विचार करेंगे? और क्या होगा यदि मेरे पास कैप्चा की आवश्यकता के बिना मैन्युअल रूप से उपयोगकर्ताओं को जोड़ने के लिए व्यवस्थापक पैनल है? बी) हाँ मैं कर सकता हूं, लेकिन सवाल यह है कि किसकी ज़िम्मेदारी है? सत्यापन परत? फैक्टरी? भंडार? सी) ठीक है, लेकिन अगर मेरे पास ऐसे उपयोगकर्ता हैं जिनके पास टिप्पणियां हैं, तो क्या यह उपयोगकर्ता डेटा पेज प्रदर्शित करने के लिए इस डेटा को लोड करना स्मार्ट होगा? –
ए) यह वास्तव में आपकी ज़रूरतों पर निर्भर करता है, मैंने इसे "आसान" पाया है ताकि इकाई में स्वयं को सहायक वर्गों का उपयोग करके सत्यापन किया जा सके। लेकिन सत्यापन की एक अतिरिक्त परत जोड़ना बिल्कुल ठीक है। बी) मैं कहूंगा कि यह सत्यापन की परत जिम्मेदारी है। यदि दो खातों में एक ही संख्या नहीं हो सकती है और आप पहले से मौजूद किसी संख्या के साथ जोड़ने की कोशिश करते हैं, तो इसका मतलब है कि इकाई ** अमान्य ** है, या कम से कम जो मुझे लगता है। – jere
सी) यह भी आप जो चाहते हैं उस पर निर्भर करता है। यदि आप प्रोफाइल पेज पर एक ही बार में यह जानकारी दिखाने जा रहे हैं तो हाँ, एक ही कॉल में सभी जानकारी लोड करें। लेकिन यदि आप दिखाते हैं, तो कहें, केवल पोस्ट, और जब आप एक पर क्लिक करते हैं तो आप टिप्पणियां दिखाते हैं, तो उस पल में टिप्पणियां लोड करना बेहतर होगा, शायद AJAX – jere