一千萬個為什麽

搜索

PHP中的OOP:來自變量的類函數?

是否可以像這樣調用類中的函數:

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

類似的解決方案,這似乎不起作用?

最佳答案

Yes, it is possible, that is know as variable functions, have a look at this.

來自PHP官方網站的示例:

<?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()等。利用包裝器函數將這些結構中的任何一個用作可變函數。

轉載註明原文: PHP中的OOP:來自變量的類函數?