क्या इस तरह वर्ग से कार्यों को कॉल करना संभव है:PHP में ओओपी: एक चर से कक्षा-समारोह?
$class = new class;
$function_name = "do_the_thing";
$req = $class->$function_name();
कुछ समान समाधान, यह काम नहीं कर रहा है?
क्या इस तरह वर्ग से कार्यों को कॉल करना संभव है:PHP में ओओपी: एक चर से कक्षा-समारोह?
$class = new class;
$function_name = "do_the_thing";
$req = $class->$function_name();
कुछ समान समाधान, यह काम नहीं कर रहा है?
हाँ, यह संभव है, कि चर कार्यों के रूप में जानते है, पीएचपी की आधिकारिक साइट से एक 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()
और पसंद के रूप में भाषा निर्माणों के साथ काम नहीं करेगा। परिवर्तनीय कार्यों के रूप में इनमें से किसी भी संरचना का उपयोग करने के लिए रैपर फ़ंक्शंस का उपयोग करें।
मेरे लिए सबसे आसान उदाहरण है:
$class = new class;
$function_name = "do_the_thing";
$req = $class->${$function_name}();
$ {$ function_name} चाल
इसके अलावा स्थिर तरीकों के साथ काम करता है:
$req = $class::{$function_name}();
मुझे $ req = $ class -> $ {$ function_name}() का उपयोग करके त्रुटि मिलती है; हालांकि निम्नलिखित सही वाक्यविन्यास $ req = $ class -> {$ function_name}(); फिक्स के लिए – Martin
धन्यवाद @ मार्टिन। मुझे कोड के साथ दोबारा जांच करनी होगी जहां यह देखने के लिए आया कि मुझे यह त्रुटि क्यों मिली। – Tudor
परिवर्तनीय चर का उपयोग करने के तरीके, अच्छा! – Wietse
के संभावित डुप्लिकेट http://stackoverflow.com/questions/936875/how-would-i-call-a-method-from-a-class-with-a-variable – outis