में विधि मौजूद है, तो method_exists()
को यह देखने के लिए एक ऑब्जेक्ट की आवश्यकता है कि कोई विधि मौजूद है या नहीं। लेकिन मैं जानना चाहता हूं कि एक ही कक्षा के भीतर से कोई विधि मौजूद है या नहीं।जांचें कि क्या एक ही कक्षा
मेरे पास एक तरीका है जो कुछ जानकारी संसाधित करता है और एक क्रिया प्राप्त कर सकता है, जो उस जानकारी को आगे संसाधित करने के लिए एक विधि चलाता है। मैं यह जांचना चाहता हूं कि यह कॉल करने से पहले विधि मौजूद है या नहीं। मैं इसे कैसे प्राप्त कर सकता हूं?
उदाहरण:
class Foo{
public function bar($info, $action = null){
//Process Info
$this->$action();
}
}
नीचे दिए गए उत्तर ठीक हैं, बस एक अतिरिक्त टिप्पणी: क्या आपने खुद से पूछा है कि आपको यह पता लगाने की आवश्यकता है कि विधि मौजूद है या नहीं? यह स्थिति _may_ उत्पन्न होती है यदि आपके पास मूल वर्ग से प्राप्त विधि है या यदि आप इस बारे में अनिश्चित हैं कि वर्तमान वर्ग को क्या प्राप्त होता है। दोनों मामलों को एक इंटरफेस या एक अमूर्त विधि परिभाषा का उपयोग करके निपटाया जा सकता है। जो अधिक पारदर्शी है और समय को संकलित करने के लिए रनटाइम से त्रुटि को स्थानांतरित करता है, इस प्रकार बेहतर है। – arkascha
क्योंकि मेरे पास कुछ अन्य विधियां हैं जो सार्वजनिक हैं और उस प्रक्रिया को आगे संसाधित करती हैं और संसाधित डेटा लौटाती हैं, पहली विधि वापस नहीं आती है, क्योंकि यह डेटा प्राप्त कर सकता है जिसे अभी संसाधित किया जाना चाहिए और उसे कुछ भी वापस करने की आवश्यकता नहीं है। लेकिन मैंने सोचा कि यदि आवश्यक हो तो दूसरी विधि को फ़िसर्ट विधि से कॉल करने के लिए समय बचाने वाला होगा, लेकिन फिर भी उन्हें अलग-अलग कॉल करने में सक्षम होना चाहिए। – Rafael
लेकिन कक्षा के अंदर ही, यदि कोई विधि मौजूद है तो यह अस्पष्ट क्यों होना चाहिए? मेरा मतलब है कि या तो यह कक्षा में घोषित/लागू किया गया है या यह नहीं है। रनटाइम पर यह कैसे और क्यों बदलना चाहिए? मैं कहूंगा कि विधि वास्तव में मौजूद है या नहीं। – arkascha