मैंने हमेशा अतीत में विभिन्न ओआरएम के साथ काम किया है और मेरे सभी तर्कों को मेरे प्रकृति के बावजूद मेरे मॉडल के अंदर रखा है - एसक्यूएल, मोंगोडीबी प्रश्न & यहां तक कि दूरस्थ JSON ऑब्जेक्ट्स को भी ला रहा है। लेकिन जब उच्च स्तर की टेस्टेबिलिटी की अनुमति देने के लिए ढीले कपलिंग सुनिश्चित करना आवश्यक है, तो इस पद्धति के मुद्दे जल्दी प्रकट होते हैं।डोमेन ऑब्जेक्ट को समझना + डेटा मैपर पैटर्न?
आज मैंने मॉडल को दो भागों में विभाजित करने के बारे में पढ़ा है, Domain objects
& Data mappers
।
यदि मैं इसे पूरी तरह समझ गया, Domain objects
पूरी तरह से उपयोग किए गए संग्रहण से अनजान हैं, और इसके बजाय व्यावसायिक तर्क को संभालने के लिए मौजूद है। Data mappers
दूसरी ओर Domain objects
में डेटा सेट को सेट डेटा संग्रहण में संग्रहीत करने का ख्याल रखता है।
हालांकि मुझे डोमेनओब्जेक्ट्स & वास्तविक दुनिया उदाहरण में डेटामैपर के साथ काम करने के तरीके के बारे में ऑनलाइन एक अच्छा, आसान समझने वाला उदाहरण ऑनलाइन खोजने में थोड़ा मुश्किल लगता है।
क्या यह (नीचे दिखाया गया कोड) डोमेनओब्जेक्ट्स & डेटामैपर्स के साथ काम करने का उचित तरीका होगा उपयोगकर्ताओं को स्टोर करने के लिए या मेरे सिर में यह सब गलत हो गया है?
$user = new User_DO;
$userSave = new User_DM;
$userSave->store($user->add(array('name' => 'John Doe')));
class User_DO {
function add($array) {
if(!isset($array['name'])) {
throw new Exception("Name must be set");
}
return $array;
}
}
class User_DM {
function store($array) {
MyDatabase::execute("INSERT INTO...");
}
}
असली दुनिया में शायद एक बेवकूफ उदाहरण है, लेकिन जो पैटर्न को बेहतर ढंग से समझा सकता है, एक "आयु" फ़ील्ड के साथ एक डोमेन ऑब्जेक्ट होगा, जबकि डेटा मैपर "जन्म के वर्ष" मूल्य को जारी रखेगा। –