不好的做法?它叫什么'

mik*_*eum 1 php

在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)

对这种方法的任何评论都非常受欢迎,我也想知道在编程术语中调用这种方法的方法.

Pas*_*TIN 8

不确定这是不好的做法,但它让你的代码难以理解:要了解你的短(5行)示例,我不得不考虑:-(

使用call_user_func()和相同类型的其他功能可以至少有一个优点:查看代码,人们可以立即理解您正在调用函数的方式不是我们通常习惯的方式.