Поскольку в первом примере test()
может использовать func_get_args()
для доступа к своим аргументам, поэтому он не должен выдавать ошибку.
Во втором примере $a
не является обязательным.Если вы хотите, чтобы он был необязательным, отметьте значение по умолчанию в сигнатуре аргументов следующим образом:
function test($a = 1)
{
echo 1;
}
test();
Так что да, это поведение по умолчанию, и оно имеет смысл, как только вы узнаете выше.Относительно редактирования
В первом отредактированном примере вы сможете получить доступ к 2
как $a
, однако 1
будет только доступным через func_get_args()
(илииз его похожих функций, таких как func_get_arg()
).