В php вы обычно можете вызывать функцию с большим количеством параметров, чем было определено, например,
function f($a, $b) {
return $a . $b;
}
f('a', 'b', 'c', 'e');
полностью действителен
Я понимаю, что вы можете определять функции с переменным количеством параметров. Но в большинстве случаев это не то, что вы хотите сделать.
Так что в этих случаях, если вы по ошибке замените .
по ,
вы даже не получите предупреждение.
$x = '0';
f('a' , 'b' . $x . 'c') // returns ab0c
f('a' , 'b' , $x . 'c') // returns ab
Теперь в PHP 7 есть function f($a, $b, ...$others)
синтаксис. Таким образом, в princable можно отличить функции переменных параметров от обычных.
Есть ли способ получить уведомление, когда функция вызывается со слишком большим количеством параметров?
Существует метод фактического подсчета переменных, отправленных в вашу функцию, однако вы можете сделать это ВНУТРИ функции или ДО функции путем подсчета отправленных элементов.
Увидеть http://php.net/manual/en/function.func-num-args.php для дополнительной информации.
Вы также можете использовать http://php.net/manual/en/function.func-get-args.php получить текущие аргументы, отправленные в функцию.
Ваша проблема, однако, должна выглядеть примерно так:
function(){
$count = func_num_args();
if($count > 3){
//too many args
}
else{
//continue your actual code
}
}
Других решений пока нет …