У меня есть функция, которая не принимает параметров, т.е. function doSomething(){...}
,
Если я бегу, call_user_func_array('doSomething', array('param1' => 'something'));
это не возвращает ошибку.
Могу ли я заставить его вызвать ошибку типа «Эта функция не должна принимать параметры».
Вполне возможно отправить больше параметров пользовательской функции, чем определяет сигнатура функции. Это потому, что вы можете использовать дополнительный код в своей функции для их обработки или просто игнорировать их.
function doSomething(){
if (func_num_args() > 0) {
throw new Exception('Too many arguments');
}
....
}
Используйте что-то подобное выше, чтобы проверить аргументы, которые были переданы вашей функции
Вы могли бы использовать func_num_args
:
function foo()
{
$n = func_num_args();
if ($n > 0) {
echo "Number of arguments: $n, 0 expected.";
return;
}
}
foo(1, 2, 3);
:: Информация
Проверьте ReflectionFunction учебный класс. Используя это, вы можете определить, сколько параметров ожидает функция, и избежать ее вызова при несовпадении.