मेरी कार्यस्थल पर (केवल PHP) हमारे पास डेटाबेस अबास्ट्रक्शन के लिए बेस क्लास है। जब आप बेस लेयर में एक नई डेटाबेस तालिका जोड़ना चाहते हैं, तो आपको इस बेस क्लास का सबक्लास बनाना होगा और इस तालिका का उपयोग करने के लिए व्यक्तिगत व्यवहार को परिभाषित करने के लिए कुछ तरीकों को ओवरराइड करना होगा। सामान्य व्यवहार वही रहना चाहिए।PHP में आभासी कार्यों का सही कार्यान्वयन?
अब मैंने हमारी कंपनी में कई नए प्रोग्रामर देखे हैं, जो डिफ़ॉल्ट व्यवहार के लिए विधि को ओवरराइड करते हैं। कुछ सभी डिफ़ॉल्ट व्यवहार में डालने के लिए "अच्छा" हैं और बस उन्हें अलग-अलग सामान जोड़ें जहां वे इसे पसंद करते हैं, अन्य लोग स्वयं को बेसक्लास और उनके उत्तराधिकारी का उपयोग करने की कोशिश कर रहे हैं।
इस समस्या को हल करने के लिए मेरा पहला विचार, अमूर्त विधियों के बारे में सोच रहा था जो कक्षाओं को विरासत में अतिरंजित किया जाना चाहिए। लेकिन अमूर्त तरीकों के खिलाफ अन्य तर्कों के बगल में, "अमूर्त" सिर्फ क्यों नहीं दिखाता है बेसक्लास का उपयोग अपने और क्यों नहीं किया जा सकता है इन फ़ंक्शन को ओवरराइड किया जाना चाहिए।
कुछ googling के बाद मुझे php में "असली" आभासी कार्यों को लागू करने का एक अच्छा जवाब नहीं मिला (बस एक वर्चुअल फ़ंक्शन है, जो लगभग ठोस कार्यान्वयन की सभी आशाओं को मारता है)।
तो, आप इस मामले के साथ क्या करेंगे?
मुझे खेद है, लेकिन जब आप कहते हैं कि "वर्चुअल फ़ंक्शंस" आप __call() और __callStatic() जादू विधियों के बारे में बात कर रहे हैं, तो मुझे आपका प्रश्न बिल्कुल समझ में नहीं आया? या लैम्ब्डा कार्यों? –
मुझे लगता है कि वह विधि अधिभावी का मतलब है। http://en.wikipedia.org/wiki/Method_overriding जो C++ के रूप में आभासी कार्यों में संदर्भित किया जाता है। –