Больше параметров, чем ожидалось: нет ошибки в PHP?

Пожалуйста, посмотрите этот код, где я передаю больше параметров, чем ожидалось, пользовательской функции:

error_reporting(E_ALL);
ini_set("display_errors", 1);

daidai("asassa", "asgfasfas", "asassa");

function daidai($aa)
{
echo $aa;
}

Это не выдает ошибку вообще, пока я ожидал Warning: function daidai() expects at most 1 parameter, 3 given

Что меня озадачивает, так это то, что эта ошибка выдает ожидаемую ошибку:

$Odate=new DateTime();
$sfasfasf=$Odate->setTime("23", "59", "30", "unexpected");

Зачем?

1

Решение

Это потому что setTime() Сам метод выполняет проверку количества параметров, если вы хотите, чтобы это было в ваших функциях, вы должны реализовать это самостоятельно.

Для справки вы можете посмотреть в документы за func_num_args(), func_get_arg() а также func_get_args()

Из документов:

Никакого специального синтаксиса не требуется, чтобы заметить, что функция является переменной;
однако доступ к аргументам функции должен использовать func_num_args (),
func_get_arg () и func_get_args ().

Следовательно, php действительно рассматривает каждую функцию как переменную.

2

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

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

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