【发布时间】:2011-08-27 10:02:29
【问题描述】:
我想使用变量动态命名一些函数,如下所示:
$thing = 'some_function';
function $thing() {
echo 'hi!';
}
我知道我可以使用这样的变量调用函数:
$something = 'function_exists';
if( $something('print_r') ) {
echo 'Yep';
}
但上面的例子对我不起作用。
有什么想法吗?
我正在使用具有模块的系统。每个模块都是一个 php 脚本,可以从特定文件夹中添加或删除。
每个模块都需要一个新函数来初始化它。我正在查找文件名,然后我想循环并创建一系列函数,每个模块一个。
我正在使用现有系统,无法重写模块处理。
另一种方法是只写出所有的 init 函数并对其进行硬编码,但随着列表的增长,代码也会随之增长 - 如果模块被删除,则会引发错误。
【问题讨论】:
-
你的第一个代码没问题。但在使用此功能之前,您应该三思而后行。然后决定不使用它。
-
除非这没有用。您会看到,该功能始终是静态的-您不能以这种方式使功能有所不同。无论这个函数被命名为什么,这个函数无论如何都会以同样的方式运行。这就像制作
hello()函数一样,只是根据您喜欢用户的方式命名不同:P。对于这样的功能,您可能会使用$thing()访问,使其无用。正常命名函数即可。 -
愿意评论我不应该这样做的原因吗?
-
@Mick:我对你的主要问题发表了评论。它显示了为什么不这样做的一些原因。