call_user_func_array, чтобы не принимать неожиданные параметры функции

У меня есть функция, которая не принимает параметров, т.е. function doSomething(){...},

Если я бегу, call_user_func_array('doSomething', array('param1' => 'something')); это не возвращает ошибку.

Могу ли я заставить его вызвать ошибку типа «Эта функция не должна принимать параметры».

0

Решение

Вполне возможно отправить больше параметров пользовательской функции, чем определяет сигнатура функции. Это потому, что вы можете использовать дополнительный код в своей функции для их обработки или просто игнорировать их.

function doSomething(){
if (func_num_args() > 0) {
throw new Exception('Too many arguments');
}
....
}

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

1

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

Вы могли бы использовать func_num_args:

function foo()
{
$n = func_num_args();
if ($n > 0) {
echo "Number of arguments: $n, 0 expected.";
return;
}
}

foo(1, 2, 3);

:: Информация

1

Проверьте ReflectionFunction учебный класс. Используя это, вы можете определить, сколько параметров ожидает функция, и избежать ее вызова при несовпадении.

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