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