मैं उन लोगों से सुनना चाहता हूं जिन्होंने डॉक्ट्रिन 2 (या बाद में) और प्रोपेल 1.5 (या बाद में) का उपयोग किया है। इन दो ऑब्जेक्ट रिलेशनल मैपर्स के बीच अधिकांश तुलना पुराने संस्करणों पर आधारित है - डॉक्ट्रिन 1 बनाम प्रोपेल 1.3 / 1.4, और दोनों ओआरएम अपने हाल के संशोधनों में महत्वपूर्ण रीडिज़ाइन के माध्यम से गए। उदाहरण के लिए, प्रोपेल की अधिकांश आलोचना "मॉडलनाम पीर " कक्षाओं के आसपास केंद्रित होती है, जो किसी भी मामले में 1.5 में चित्रित किए गए हैं।
यहाँ मैंने जो अभी तक संचित किया है (और मैंने इस सूची को यथासंभव संतुलित करने की कोशिश की है ...):
- प्रोपेल
- पेशेवरों
- PHP मैजिक मेथड्स पर निर्भर होने के बजाए, वास्तविक IDE के अनुकूल, क्योंकि वास्तविक कोड उत्पन्न होता है। इसका मतलब है कि कोड पूरा होने जैसे आईडीई फीचर्स वास्तव में मददगार हैं।
- उपवास (डेटाबेस के उपयोग के संदर्भ में - डेटाबेस पर कोई रनटाइम आत्मनिरीक्षण नहीं किया जाता है)
- स्कीमा संस्करणों के बीच स्वच्छ प्रवास (कम से कम 1.6 बीटा में)
- PHP 5.3 मॉडल (यानी नामस्थान) उत्पन्न कर सकते हैं
useXxxतरीकों की तरह चीजों के साथ एक ही डेटाबेस क्वेरी में बहुत सी चीजों को चेन करना आसान है । (ऊपर "कोड पूरा" वीडियो देखें)
- विपक्ष
- मॉडल कक्षाओं के निर्माण के लिए एक अतिरिक्त बिल्ड स्टेप की आवश्यकता होती है।
- जब भी प्रोपेल वर्जन बदला जाता है, एक सेटिंग बदली जाती है, या स्कीमा परिवर्तित होता है, तब जेनरेट किए गए कोड की आवश्यकता होती है।
यह मॉडल के लिए लागू कुछ और कस्टम तरीकों के लिए अनजाना हो सकता है। (मुझे लगताहै;)- सच नहीं है; कस्टम तरीके खोए नहीं हैं क्योंकि उत्पन्न वर्ग एक आधार वर्ग है; प्रोपेल विशेष रूप से विस्तार के लिए एक इकाई वर्ग प्रदान करता है। - कुछ उपयोगी सुविधाएँ (अर्थात संस्करण व्यवहार, स्कीमा माइग्रेशन) बीटा स्थिति में हैं।
- पेशेवरों
- सिद्धांत
- पेशेवरों
- अधिक लोकप्रिय
- डॉक्ट्रिन क्वेरी लैंग्वेज डेटा के बीच संभावित रूप से अधिक जटिल रिश्तों को आसानी से प्रोपल की ActiveRecord रणनीति के साथ व्यक्त कर सकती है।
- प्रोपेल की तुलना में पुन: प्रयोज्य व्यवहारों को जोड़ने में आसान।
- स्कीमा के निर्माण के लिए DocBlock आधारित टिप्पणी एक अलग XML फ़ाइल के बजाय वास्तविक PHP में एम्बेडेड है।
- हर जगह PHP 5.3 नाम स्थान का उपयोग करता है
- विपक्ष
- एक पूरी तरह से नई प्रोग्रामिंग भाषा सीखने की आवश्यकता है (सिद्धांत क्वेरी भाषा)
- कई स्थानों पर "जादू के तरीकों" के रूप में लागू किया गया, जिससे आईडीई स्वत: पूर्ण बेकार हो गई।
- डेटाबेस आत्मनिरीक्षण की आवश्यकता है और इस प्रकार डिफ़ॉल्ट रूप से प्रोपेल की तुलना में थोड़ा धीमा है; कैशिंग इसे हटा सकता है लेकिन कैशिंग काफी जटिलता जोड़ता है।
- कोर कोडबेस में कम व्यवहार शामिल हैं। Propel कई सुविधाएँ बॉक्स से बाहर प्रदान करता है (जैसे नेस्टेड सेट) केवल एक्सटेंशन के माध्यम से उपलब्ध हैं।
- फ्रीकिन की बड़ी :)
- पेशेवरों
हालांकि, मैंने केवल दोनों टूल के लिए उपलब्ध प्रलेखन को पढ़ने के माध्यम से चमक दी है - मैंने वास्तव में अभी तक कुछ भी नहीं बनाया है।
मैं उन लोगों से सुनना चाहता हूं, जिन्होंने प्रत्येक पुस्तकालय के पेशेवरों / विपक्षों पर अपने अनुभव को साझा करने के लिए दोनों उपकरणों का उपयोग किया है, और इस बिंदु पर उनकी सिफारिश क्या है :)