एक प्लगइन के बजाय एक पुनर्लेखन का उपयोग करने का स्पष्ट कारण यह है कि जब आपको ओवरराइड करने की आवश्यकता होती है निजी, संरक्षित या अंतिम तरीकों ।
लेकिन निम्नलिखित परिदृश्यों पर भी विचार करें।
पहला परिदृश्य (पूर्ण क्रम क्रम):
जब आप प्लगइन्स से पहले अपने कोड को चलाना चाहते हैं, तो रिवाइट्स उपयोगी हो सकते हैं । मुझे पता है कि आप इसे प्लगइन सेट करके कर सकते हैं sortOrder
, लेकिन आप यह सुनिश्चित नहीं कर सकते कि आपका कोड हमेशा पहला होगा जब कोई व्यक्ति (आप नहीं) 3 पार्टी घटकों को स्थापित करने जा रहा है।
दूसरा परिदृश्य (कोड बाहर करें):
यदि आपको किसी विधि में कोड के एक टुकड़े को बाहर करने या फिर से लिखने की आवश्यकता है , तो एक प्लगइन एक उप-इष्टतम तरीका हो सकता है। मुझे पता है कि आप एक around
प्लगइन का उपयोग कर सकते हैं और कॉल करने से बच सकते हैं proceed
, लेकिन यह स्टैक में अन्य प्लगइन्स को तोड़ सकता है।
तीसरा परिदृश्य (कोड शैली):
जब आपको किसी व्यवहार को फिर से लिखने की आवश्यकता हो, तो आपको राइटर्स का उपयोग करना चाहिए आउटपुट संशोधित करने या कोड को पहले / बाद में चलाने के ।
एक प्लगइन, हमेशा अन्य मॉड्यूल को तोड़ने से बचने के लिए मूल कोड चलाना चाहिए ।
मेरा निष्कर्ष:
यदि आप एक कोर विधि को ब्लैक बॉक्स के रूप में मान सकते हैं एक इनपुट और एक आउटपुट के साथ हैं और आप इसके आंतरिक तंत्र के बारे में अज्ञेय हैं, तो एक प्लगइन सबसे अच्छा विकल्प हो सकता है।
यदि आपको एक आंतरिक व्यवहार बदलने की आवश्यकता है , तो एक फिर से लिखना सबसे अच्छा विकल्प हो सकता है।