PHP 中的 OOP:来自变量的类函数?

2022-08-30 14:11:46

是否可以像这样从类中调用函数:

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

类似的解决方案,这似乎不起作用?


答案 1

是的,这是可能的,这被称为变量函数看看这个。

来自 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()


答案 2

我最简单的例子是:

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

${$function_name} 是诀窍

也适用于静态方法:

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

推荐