在PHP中,我正在考虑做这样的事情:
function foo(){
echo 'bar';
}
$fn = 'foo';
$fn();
Run Code Online (Sandbox Code Playgroud)
它有效,但它被认为是不好的做法?
我有一个多维数组元素,每个元素都有一个相应的函数.我想存储该函数名称,并在遍历数组时为每个元素调用相应的函数.
就像是:
function render_el1(){ echo 'et';}
function render_el2(){ echo 'to';}
$elements = array(
'el_1' => array(
'name' => 'Element One'
, 'func' => 'render_el1'
)
, 'el_2' => array(
'name' => 'Element Two'
, 'func' => 'render_el2'
)
);
foreach($elements as $element => $options){
$fn = $options['func'];
echo '<h1>'.$options['name'].'</h1>';
if (function_exists($fn)) {
$fn();
}
}
Run Code Online (Sandbox Code Playgroud)
对这种方法的任何评论都非常受欢迎,我也想知道在编程术语中调用这种方法的方法.
不确定这是不好的做法,但它让你的代码难以理解:要了解你的短(5行)示例,我不得不考虑:-(
使用call_user_func()和相同类型的其他功能可以至少有一个优点:查看代码,人们可以立即理解您正在调用函数的方式不是我们通常习惯的方式.