2010-04-17 9 views
24

क्या इस तरह वर्ग से कार्यों को कॉल करना संभव है:PHP में ओओपी: एक चर से कक्षा-समारोह?

$class = new class; 
$function_name = "do_the_thing"; 
$req = $class->$function_name(); 

कुछ समान समाधान, यह काम नहीं कर रहा है?

+0

के संभावित डुप्लिकेट http://stackoverflow.com/questions/936875/how-would-i-call-a-method-from-a-class-with-a-variable – outis

उत्तर

50

हाँ, यह संभव है, कि चर कार्यों के रूप में जानते है, पीएचपी की आधिकारिक साइट से एक look at this.

उदाहरण है:,

<?php 
class Foo 
{ 
    function Variable() 
    { 
     $name = 'Bar'; 
     $this->$name(); // This calls the Bar() method 
    } 

    function Bar() 
    { 
     echo "This is Bar"; 
    } 
} 

$foo = new Foo(); 
$funcname = "Variable"; 
$foo->$funcname(); // This calls $foo->Variable() 

?> 

आपके मामले में है कि यह सुनिश्चित कर लें फ़ंक्शन do_the_thing मौजूद है। यह भी ध्यान रखें कि आप समारोह की वापसी मान भंडारण कर रहे हैं: देखने के लिए

$req = $class->$function_name(); 

कोशिश क्या चर $req शामिल हैं। उदाहरण के लिए यह आप की जानकारी देना चाहिए:

print_r($req); // or simple echo as per return value of your function 

नोट:

चर कार्यों ऐसे echo(), print(), unset(), isset(), empty(), include(), require() और पसंद के रूप में भाषा निर्माणों के साथ काम नहीं करेगा। परिवर्तनीय कार्यों के रूप में इनमें से किसी भी संरचना का उपयोग करने के लिए रैपर फ़ंक्शंस का उपयोग करें।

+2

नोट में दी गई जानकारी के लिए +1। – MAS1

+0

@ एमएएस 1: हाँ यह बहुत महत्वपूर्ण है :) – Sarfraz

+0

धन्यवाद, एक अच्छा और विस्तृत उत्तर! :) –

4

मेरे लिए सबसे आसान उदाहरण है:

$class = new class; 
$function_name = "do_the_thing"; 
$req = $class->${$function_name}(); 

$ {$ function_name} चाल

इसके अलावा स्थिर तरीकों के साथ काम करता है:

$req = $class::{$function_name}(); 
+1

मुझे $ req = $ class -> $ {$ function_name}() का उपयोग करके त्रुटि मिलती है; हालांकि निम्नलिखित सही वाक्यविन्यास $ req = $ class -> {$ function_name}(); फिक्स के लिए – Martin

+0

धन्यवाद @ मार्टिन। मुझे कोड के साथ दोबारा जांच करनी होगी जहां यह देखने के लिए आया कि मुझे यह त्रुटि क्यों मिली। – Tudor

+0

परिवर्तनीय चर का उपयोग करने के तरीके, अच्छा! – Wietse

संबंधित मुद्दे