使用变量来定义PHP函数

Use a variable to define a PHP function

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

1
2
3
4
5
$thing = 'some_function';

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

我知道我可以使用如下变量调用函数:

1
2
3
4
5
$something = 'function_exists';

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

但最重要的例子对我来说不起作用。

有什么想法吗?

我正在使用一个有模块的系统。每个模块都是一个单独的PHP脚本,可以添加或从特定的文件夹中删除。

每个模块都需要一个新功能来初始化它。我正在为文件名添加全局标记,然后我想循环并创建一系列函数,每个模块一个。

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

另一种方法是将所有的init函数都写出来并硬编码,但是随着列表的增长,代码也会随之增长——如果去掉一个模块,就会抛出错误。


你能做的就是

1
2
3
4
5
$thing = 'some_function';
$$thing = function() {
   echo 'hi';
};
$some_function();

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

1
2
3
4
5
6
// Use this in < 5.3
$thing = 'some_function';
$$thing = create_function('',
   'echo"hi";'
);
$some_function();

也就是说,用动态名称定义函数是一个坏主意。相反,创建一个调用的函数数组,或者使用多态性。