2

我为我未来的程序开发了一种新技术来决定在没有 if/else 语句的情况下触发哪个函数。它是创建一个关联的函数数组,并根据给定的参数由函数调用它们。我认为实际的表现会更好。

$_functions = array(
    "names" => function() {
        ....
    },
    "orders" => function() {
        ....
    }
);
function doLoad($toLoad) {
    global $_functions;
    $_functions[$toLoad]();
}

现在,用户只需编写:

doLoad("names");

他们想在哪里打印名字。

问题:

我将创建一个脚本,并将其分发给其他人以按照他们的方式使用它。

以这种方式对我的脚本执行此操作会更好吗?这种技术有什么缺点吗?

4

2 回答 2

1

我真的不明白你在找什么,但我会这样做,以提高可读性。它也可能更有效:

function doLoadNames() {

}
function doLoadOther() {

}

function doLoad($toLoad) {
    $functionName = 'doLoad'.ucfirst($toLoad);
    if (function_exists($functionName)) {
        $functionName();
        return true;
    }
    return false;
}
于 2013-08-24T09:00:50.717 回答
0

所有你需要的是一个名为call_user_funcor的函数call_user_func_array,手册在这里call_user_funccall_user_func_array

于 2013-08-24T09:00:02.020 回答