一尘不染

使用变量定义PHP函数

php

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

$thing = 'some_function';

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

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

$something = 'function_exists';

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

但是最重​​要的例子对我不起作用。

有任何想法吗?

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

每个模块都需要一个新功能来对其进行初始化。我正在寻找文件名,然后想循环并创建一系列功能,每个模块一个。

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

替代方法是只写出所有init函数并对其进行硬编码,但是随着列表的增加,代码也将增加-如果模块被删除,则会引发错误。


阅读 365

收藏
2020-05-26

共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();

话虽这么说,用动态名称定义函数不是一个好主意。而是创建一个您要调用的函数数组,或使用多态性。

2020-05-26