Запретить передачу большего количества параметров в функцию, чем определено

В 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 можно отличить функции переменных параметров от обычных.

Есть ли способ получить уведомление, когда функция вызывается со слишком большим количеством параметров?

1

Решение

Существует метод фактического подсчета переменных, отправленных в вашу функцию, однако вы можете сделать это ВНУТРИ функции или ДО функции путем подсчета отправленных элементов.

Увидеть 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
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]