आप ऐसी स्थितियों का सामना कर सकते हैं जहां आपको विशिष्ट इनहेरिटेंस के विकल्प के बिना किसी क्लास या उसके तरीकों को संशोधित करने की आवश्यकता होती है। उदाहरण के लिए, निम्न वर्ग लें:
class third_party_library { function buggy_function() { return 'bad result'; } function other_functions(){ return 'blah'; } }
आप buggy_function() विधि को अधिक वांछनीय कार्यान्वयन के साथ बदलना चाह सकते हैं, लेकिन वंशानुक्रम के माध्यम से ऐसा करना संभव नहीं है। PHP मूल रूप से मंकी पैचिंग का समर्थन नहीं करता है, जो आपको परिभाषित होने के बाद कक्षाओं को संशोधित करने की अनुमति देता है।
एक संभावित समाधान पीईसीएल रनकिट लाइब्रेरी का उपयोग करना है, जो एक runkit_method_redefine() फ़ंक्शन प्रदान करता है। यह आपको कोड स्ट्रिंग्स का मूल्यांकन करके विधियों को संशोधित करने की अनुमति देता है:
runkit_method_redefine('third_party_library', 'buggy_function', '', 'return \'good result\'' );
हालांकि, इस दृष्टिकोण में कमियां हैं। स्ट्रिंग मूल्यांकन के माध्यम से कोड को संशोधित करना खतरनाक हो सकता है और डिबगिंग चुनौतीपूर्ण हो सकती है।
एक अन्य विकल्प किसी मौजूदा को संशोधित करने के बजाय क्लास में एक फ़ंक्शन जोड़ने पर विचार करना है। कुछ भाषाओं में, जैसे C#, यह "आंशिक कक्षाओं" का उपयोग करके संभव है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि आपके विशिष्ट मामले में रूपरेखा सीमाओं के कारण यह संभव नहीं हो सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3