2009-04-21 14 views
5

रूबी एक पार्टी के लिए आमंत्रित किया और हो जाता है लाता है:PHP भेजने और getattr के बराबर?

foobarobject.send('foomethod') 

.. और अजगर एक ही पार्टी के लिए आमंत्रित किया जाता है और लाता है:

getattr(foobarobject, 'foomethod')() 

.. पार्टी के लिए क्या करता है पीएचपी है लाने के लिए ?

बोनस प्रश्न: यदि रुबी और पायथन को PHP के पक्ष-पक्षों से ईर्ष्या हो गई है, तो PHP के पीछे के बारे में बात करने के लिए वे PHP के दस्तावेज़ों में कौन से अंग्रेज़ी शब्द खोजेंगे?

+0

दोनों अलग हैं: रूबी संस्करण विधि को आमंत्रित करता है; पायथन संस्करण एक बाध्य विधि देता है। प्रश्न के वाक्यांश के रचनात्मक तरीके के लिए – Miles

+5

+1 :) –

+0

@ मील: प्रश्न अब पाइथन संस्करण में paren जोड़कर संशोधित किया गया है। – dreftymac

उत्तर

10

पीएचपी इस लाता है:

$foobarobject->{"foomethod"}(); 

... और कोक और चिप्स।

संपादित:

हालांकि उपरोक्त के लिए शब्द है variable variables वहाँ कुछ भी नहीं विशेष रूप से मैनुअल में किसी ऑब्जेक्ट को यह कर के बारे में बात है। विधि नाम धारण करने के लिए चर का उपयोग करना

call_user_func(array($foobarobject, "foomethod")); 
+4

PHP गंभीर है .... –

3

: हालांकि, अगर आप call_user_func साथ भी वही करता है सकते हैं। पाओलो के पहले उदाहरण के समान ही, लेकिन शायद तब तक स्पष्ट नहीं है जब तक कि आप इसके बारे में नहीं जानते।

$method = "foomethod"; 
$foobarobject->$method(); 

तुम भी Reflection classes मिला है।

$method = new ReflectionMethod('Foobar', 'foomethod'); 
$method->invoke(null); 
संबंधित मुद्दे