См. Этот код, где я передаю больше параметров, чем ожидалось, в пользовательскую функцию:
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");
Зачем?
Это связано с тем, что setTime()
метод setTime()
выполняет проверку количества параметров, если вы хотите использовать его в своих функциях, вы должны реализовать его самостоятельно.
Для справки вы можете ознакомиться с документами для func_num_args()
, func_get_arg()
и func_get_args()
Из документов:
Никакого специального синтаксиса не требуется, чтобы отметить, что функция является переменной; однако доступ к аргументам функции должен использовать func_num_args (), func_get_arg () и func_get_args ().
Следовательно, php действительно рассматривает каждую функцию как вариационную.