के लिए एक साधारण ओआरएम या डीबीएएल की आवश्यकता है मैं मौजूदा PHP एप्लिकेशन को विस्तारित करने पर काम कर रहा हूं। दुर्भाग्य से मेरे लिए, मौजूदा ऐप एक गड़बड़ है। यह कच्चे mysql_ * कॉल के साथ सभी स्पेगेटी कोड है। कराहना। कोई रास्ता नहीं है कि मैं उन हिस्सों में ऐसा करने जा रहा हूं जो मैं विस्तार कर रहा हूं।मौजूदा PHP एप
तो, मैं डीबीएएल का एक साधारण ओआरएम ढूंढ रहा हूं जिसे मैं आसानी से छोड़ सकता हूं और उपयोग करना शुरू कर सकता हूं। वांछित विशेषताएं:
- यह मौजूदा डेटाबेस स्कीमा पर काम करना चाहिए। अधिमानतः न्यूनतम या कोई अतिरिक्त विन्यास के साथ। मौजूदा डेटाबेस स्कीमा मौजूदा PHP कोड (कोई समझदार नामकरण सम्मेलन, सामान्यीकृत नहीं, आदि) के समान गुणवत्ता है। मैं डेटाबेस स्कीमा को एनोटेटेड ऑब्जेक्ट गुणों में मैन्युअल रूप से कनवर्ट करने में दिन नहीं बिताना चाहता हूं, एक ला डॉक्टर 2।
- यह मौजूदा कच्चे mysql_ * प्रश्नों के साथ काम करने में सक्षम होना चाहिए। मुझे नहीं पता कि स्प्रेट्स मैन्युअल रूप से डाटाबेस में डेटा को मैनिपुलेट कर रहे हैं, लेकिन मुझे लगता है कि यह सुंदर नहीं है, तो डॉक्टर 2 की तरह ओआरएम को हाइड्रेट करना या व्यवहार करना।
- यह PHP 5.2.x पर चलाना चाहिए। मैं PHP 5.3 का उपयोग करने के लिए प्यार प्यार करता हूं लेकिन मुझे यह सुनिश्चित करने के लिए स्पेगेटी कोड मैस की मौजूदा 125K लाइनों पर जाने में शून्य रूचि है कि यह PHP 5.3 पर चलता है।
- रिश्तों की आवश्यकता नहीं है। कुछ स्थानों में मुझे डेटा को रिलेशनल करने की आवश्यकता है, मुझे अतिरिक्त
find()
याquery()
या जो भी हो, उसे कॉल करने में खुशी होगी। - बोनस पॉइंट्स यदि इसमें कुछ ट्रिगर समर्थन है (उदा।
beforeSave
,afterSave
)। एक आवश्यकता नहीं है, लेकिन बस अच्छा है।
संपादित: किसी मुझे मेरे दुख से बाहर डाल दिया। मुझे अभी पता चला है कि स्पेगेटी कोड की 125 के लाइनें डेटाबेस स्कीमा भी बदलती हैं। उदा।, कहीं भी एक अतिरिक्त विकल्प जोड़ें और पूरी तरह से आल्टर टेबल स्टेटमेंट उड़ान भरना शुरू करें। मैं शायद इस कोडबेस के साथ TheDailyWTF के एक साल के लायक को भर सकता हूं। तो, एक और आवश्यकता:
- स्वचालित रूप से एक बदलती डेटाबेस स्कीमा से निपटने में सक्षम होना चाहिए (उदा। कॉलम जोड़ना)।
मैं कुछ समाधान देख रहा हूं, लेकिन मुझे यकीन नहीं है कि वे आवश्यकताओं को कितनी अच्छी तरह से काम करेंगे। सिद्धांत 2, RedBeanPhp और सभी की तरह PHP 5.3 की आवश्यकता है, इसलिए वे बाहर हैं। PHP 5.2.x के लिए RedBeanPhp का एक विरासत संस्करण है, लेकिन मुझे नहीं पता कि यह एक गन्दा, मौजूदा डेटाबेस स्कीमा के साथ काम करेगा या नहीं। नोटोरएम डेटा प्राप्त करने के लिए ठीक दिखता है लेकिन मुझे नहीं पता कि यह मौजूदा डेटाबेस स्कीमा के लिए कॉन्फ़िगर किया जा सकता है, और आप आसानी से डेटा को डेटाबेस में कैसे डाल सकते हैं।
आदर्श रूप से मुझे कुछ आसान चाहिए। उदा:
$user = User::find($id);
$user->name = 'John Woo';
$user->save();
या:
$articles = ORM::find('article')->where('date' => '2010-01-01');
foreach ($articles as $article) {
echo $article->name;
}
किसी भी सुझाव या यहां तक कि वैकल्पिक समाधान का स्वागत है!
मैं कुछ हफ्तों के लिए आवेदन में इडियॉर्म और पेरिस जा रहा हूं और मुझे बिल्कुल पसंद है! –