使用变量来定义PHP函数

Mic*_*ick 18 php variables function

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

$thing = 'some_function';

function $thing() {
    echo 'hi!';
}
Run Code Online (Sandbox Code Playgroud)

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

$something = 'function_exists';

if( $something('print_r') ) {
    echo 'Yep';
}
Run Code Online (Sandbox Code Playgroud)

但最好的例子对我不起作用.

有任何想法吗?

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

每个模块都需要一个新函数来初始化它.我是文件名的全球化,然后我想循环并创建一系列函数,每个模块一个.

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

另一种方法是将所有init函数写出来并对其进行硬编码,但随着列表的增长,代码也会增长 - 如果模块被删除,则会抛出错误.

phi*_*hag 18

你能做的是

$thing = 'some_function';
$$thing = function() {
   echo 'hi';
};
$some_function();
Run Code Online (Sandbox Code Playgroud)

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

// Use this in < 5.3
$thing = 'some_function';
$$thing = create_function('',
   'echo "hi";'
);
$some_function();
Run Code Online (Sandbox Code Playgroud)

话虽这么说,用动态名称定义函数是个坏主意.相反,创建一个您调用的函数数组,或使用多态.