使用变量定义 PHP 函数

2022-08-30 21:12:38

我想使用变量动态命名一些函数,如下所示:

$thing = 'some_function';

function $thing() {
    echo 'hi!';
}

我知道我可以使用这样的变量调用函数:

$something = 'function_exists';

if( $something('print_r') ) {
    echo 'Yep';
}

但顶部的例子对我不起作用。

有什么想法吗?

我正在使用一个具有模块的系统。每个模块都是一个可以添加或从特定文件夹中取出的php脚本。

每个模块都需要一个新函数来初始化它。我正在为文件名进行globing,然后我想循环并创建一系列函数,每个模块一个。

我正在使用现有系统,无法重写模块处理。

另一种方法是将所有初始化函数写出来并硬编码它们,但是随着列表的增长,代码也会增长 - 如果模块被带走,则会引发错误。


答案 1

您可以做的是

$thing = 'some_function';
$$thing = function() {
   echo 'hi';
};
$some_function();

在 php < 5.3 中,您必须使用 create_function 而不是匿名函数

// Use this in < 5.3
$thing = 'some_function';
$$thing = create_function('',
   'echo "hi";'
);
$some_function();

话虽如此,使用动态名称定义函数是一个坏主意。相反,请创建一个函数数组,或使用多态性。


答案 2

推荐