2012-02-29 22 views
5

क्या आपको लगता है कि यह एक अच्छा विचार है?__destruct() पर डेटाबेस अपडेट कर रहा है?

मान लें कि आपके पास एक एप्लीकेशन घटक है जिसका उपयोग अन्य घटकों द्वारा डीबी में डेटा पुनर्प्राप्त/अद्यतन करने के लिए किया जाता है। यह मूल रूप से एक वर्ग(), सेट(), अद्यतन() विधियों के साथ है।

क्या उस घटक के लिए केवल उस गुण के अपडेट (या सेट) डेटा को अपडेट करने के लिए एक अच्छा विचार होगा, और डीबी को अपडेट करने के लिए __destruct पर भी? या इसे सीधे प्रत्येक सेट/अपडेट कॉल पर डीबी अपडेट करना चाहिए?

उत्तर

5

ऑब्जेक्ट विनाश पर डेटाबेस को अद्यतन करने से मुझे सॉफ़्टवेयर side effect की तरह थोड़ा गंध आती है। यही वह क्रिया है जो एक अप्रत्याशित और कुछ हद तक गैर-स्पष्ट स्थान पर होती है। यह आपके कोड को देखने से स्पष्ट नहीं होगा कि __destruct() पर डेटाबेस कार्रवाई हो रही है, भले ही आप इसे स्पष्ट रूप से कॉल करें। असंगत डेटा से जुड़े बग का शिकार करने का प्रयास करते समय भविष्य कोड रखरखाव (स्वयं सहित) को आसानी से भ्रमित किया जा सकता है, लेकिन डेटाबेस को कोई कॉल नहीं देख रहा है या कोड को देखते समय डेटा इंटरैक्शन जैसा विधि कॉल।

मैं इसके खिलाफ सलाह दूंगा।

2

एक विनाशक से अपवाद फेंकने का प्रयास (जिसे स्क्रिप्ट समाप्ति के में बुलाया जाता है) एक घातक त्रुटि का कारण बनता है।

तो आपके पास अपवाद कब है? किसी भी तरह, मुझे लगता है कि यह एक अच्छा विचार नहीं है, आप काम प्रवाह को नियंत्रित नहीं कर सकते हैं, और एक डीबग नरक का नेतृत्व करना आसान है।

संबंधित मुद्दे