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

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

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

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

3 ответа

Решение

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

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. Используя это, вы можете определить, сколько параметров ожидает функция, и избежать ее вызова при несовпадении.

Другие вопросы по тегам