糟糕的PHP代码。请帮助改进

时间:2013-03-30 23:07:00

标签: php

显然这是非常糟糕的代码,但我想不出如何改进它。 “测试”功能根本无法改变,但其余部分都可以改变。

我想将一个值数组传递给一个操作测试函数的函数。关键是我需要在测试函数中使用所有预定义的函数变量值,而无需重新声明它们。

我不能直接操作测试功能,它必须经过另一个功能。

这只是一个更大问题的演示,但解决这个问题肯定会解决我的问题。如果无法完成,我需要完全重新思考很多事情。

function test($p1, $p2="hello", $p3=5, $p4=true) {

}

-

function action($vars = array()) {

    $count = count($vars);

    switch($count) {

        case 1:
            $result = test($vars[0]);
            break;
        case 2:
            $result = test($vars[0], $vars[1]);
            break;
        case 3:
            $result = test($vars[0], $vars[1], $vars[2]);
            break;
        case 4:
            $result = test($vars[0], $vars[1], $vars[2], $vars[3]);
            break;

    }

    return $result;

}

-

action(array(1, "test"));

2 个答案:

答案 0 :(得分:5)

call_user_func_array('test', $vars);

http://php.net/call_user_func_array

答案 1 :(得分:0)

您不需要使用“action”功能,只需在func_get_args() php函数的帮助下单独使用“test”功能即可。您不需要将数组作为参数传递,您可以使用任意数量的参数调用“test”函数。您还可以查看php中的func_get_arg()和func_num_args()函数。