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中,必须使用
1 2 3 4 5 6 | // Use this in < 5.3 $thing = 'some_function'; $$thing = create_function('', 'echo"hi";' ); $some_function(); |
号
也就是说,用动态名称定义函数是一个坏主意。相反,创建一个调用的函数数组,或者使用多态性。