2010-08-09 14 views
9

अगर मैं एक PHP वर्ग है इसी प्रकार के:स्थैतिक वर्ग के सदस्य के लिए फंक्शन पॉइंटर?

class A 
{ 
    public static function Method() 
    { 
     return "x"; 
    } 
} 

मुझे पता है कि मैं के साथ इस का उपयोग कर सकते हैं:

echo A::Method(); 

लेकिन मैं इस विधि के लिए एक समारोह संदर्भ बनाने के बारे में कैसे जाना होगा? मैंने इस तरह कुछ करने की कोशिश की:

$func = "A::Method"; 
echo $func(); 

लेकिन यह मुझे रन-टाइम त्रुटि देता है। तो, क्या यह PHP में संभव है? यदि हां, तो कैसे? धन्यवाद! :)

उत्तर

8

दो विकल्प:

  • call_user_func("A::Method");
  • $func = function() { return A::Method(); }; echo $func()

यह योजना बनाई है (लेकिन यह परिवर्तन के अधीन है) में प्रतिबिंब के साथ ऐसा करने में सक्षम हो PHP का अगला संस्करण:

$srm = new ReflectionMethod('A::Method'); 
$func = $srm->getClosure(); 
$func(); 
+0

धन्यवाद, यह मेरे प्रश्न का उत्तर दिया। :) – qJake

+0

'getClosure' विधि PHP 5.4 के साथ उपलब्ध हो गई। सावधान रहें हालांकि लगभग 50% सर्वर अभी भी 5.3 का उपयोग कर रहे हैं – Twifty

2

क्लास विधियों या ऑब्जेक्ट विधियों को सामान्य कार्यों से अलग कहा जाता है। call_user_func या call_user_func_array का उपयोग करें:

call_user_func(array('A', 'Method')); 
call_user_func('A::Method'); // As of 5.2.3 
संबंधित मुद्दे