PHP में पेज जनरेशन लिखते समय, मैं अक्सर खुद को डेटाबेस के प्रश्नों से अटे फाइलों का एक सेट लिखता हुआ पाता हूँ। उदाहरण के लिए, मेरे पास एक पृष्ठ पर प्रदर्शित करने के लिए डेटाबेस से सीधे एक पोस्ट के बारे में कुछ डेटा लाने के लिए एक क्वेरी हो सकती है:
$statement = $db->prepare('SELECT * FROM posts WHERE id=:id');
$statement->bindValue(':id', $id, PDO::PARAM_INT);
$statement->execute();
$post = $statement->fetch(PDO::FETCH_ASSOC);
$content = $post['content']
// do something with the content
ये त्वरित, एक-बंद प्रश्न आमतौर पर छोटे होते हैं, लेकिन मैं कभी-कभी डेटाबेस इंटरैक्शन कोड के बड़े हिस्से के साथ समाप्त होता हूं जो बहुत गड़बड़ दिखने लगता है।
कुछ मामलों में, मैंने अपने पोस्ट से संबंधित db प्रश्नों को संभालने के लिए कार्यों की एक सरल लाइब्रेरी बनाकर इस समस्या को हल किया है, कोड के उस ब्लॉक को एक सरल से छोटा कर दिया है:
$content = post_get_content($id);
और यह बहुत अच्छा है। या कम से कम यह तब तक है जब तक मुझे कुछ और करने की ज़रूरत नहीं है। हो सकता है कि मुझे किसी सूची में प्रदर्शित करने के लिए पांच सबसे हालिया पोस्ट प्राप्त करने की आवश्यकता हो। खैर, मैं हमेशा एक और समारोह जोड़ सकता है:
$recent_posts = post_get_recent(5);
foreach ($recent_posts as $post) { ... }
लेकिन यह एक SELECT *
क्वेरी का उपयोग करके समाप्त होता है , जिसे मुझे आमतौर पर वैसे भी ज़रूरत नहीं है, लेकिन अक्सर यथोचित सार के लिए बहुत जटिल है। मैं अंततः हर एक उपयोग के मामले के लिए डेटाबेस इंटरैक्शन फ़ंक्शंस का एक विशाल पुस्तकालय या हर पृष्ठ के कोड के अंदर गन्दे प्रश्नों की एक श्रृंखला के साथ समाप्त होता हूं। और एक बार जब मैंने इन पुस्तकालयों का निर्माण कर लिया है, तो मैं खुद को एक छोटे से जुड़ने की ज़रूरत महसूस करूँगा, जिसका मैंने पहले उपयोग नहीं किया था, और मुझे अचानक नौकरी करने के लिए एक और अति-विशिष्ट फ़ंक्शन लिखने की आवश्यकता है।
निश्चित रूप से, मैं विशिष्ट इंटरैक्शन के लिए सामान्य उपयोग के मामलों और प्रश्नों के लिए फ़ंक्शंस का उपयोग कर सकता हूं, लेकिन जैसे ही मैं कच्चे प्रश्न लिखना शुरू करता हूं, मैं हर चीज के लिए सीधे पहुंच में वापस खिसकना शुरू कर देता हूं। या तो, या मैं आलसी हो जाऊंगा और PHP लूप में चीजें करना शुरू कर दूंगा जो वास्तव में सीधे MySQL प्रश्नों में किया जाना चाहिए, वैसे भी।
मैं इंटरनेट अनुप्रयोगों को लिखने के साथ अधिक अनुभवी लोगों से पूछना चाहता हूं: क्या कोड की अतिरिक्त लाइनों और संभव अक्षमताओं के लायक बनाए रखने की क्षमता है जो अमूर्तता का परिचय दे सकती है? या सीधे डेटाबेस क्वेरी को संभालने के लिए एक स्वीकार्य विधि का उपयोग कर रहा है?
select