Часто пропускаемым фактором в этих дебатах является дополнительное время, которое требуется для программиста, чтобы переместиться, понять и изменить меньше кода readible. Рассмотрение времени программиста идет за сто долларов в час или больше, это - очень реальная стоимость.
Любому увеличению производительности противостоят эти прямые дополнительные расходы в разработке.
Если у вас есть аргументы в массиве, вас может заинтересовать функция call_user_func_array
.
Если количество аргументов, которые вы хотите передать, зависит от длины массива, это, вероятно, означает, что вы можете сами упаковать их в массив - и использовать его для второго параметра call_user_func_array
.
Элементы переданного вами массива затем будут приняты вашей функцией как отдельные параметры.
Например, если у вас есть эта функция:
function test() {
var_dump(func_num_args());
var_dump(func_get_args());
}
Вы можете упаковать свои параметры в массив, например:
$params = array(
10,
'glop',
'test',
);
И затем вызвать функцию:
call_user_func_array('test', $params);
Этот код выведет:
int 3
array
0 => int 10
1 => string 'glop' (length=4)
2 => string 'test' (length=4)
т.е. 3 параметра; точно так же, как функция iof была вызвана следующим образом:
test(10, 'glop', 'test');
Вы можете просто назвать это.
function test(){
print_r(func_get_args());
}
test("blah");
test("blah","blah");
Вывод:
Массив ([0] => бла) Массив ([0] => бла [1] => бла)