Ответ 1
PHP не выдает ошибку при перегрузке функции.
Я n00b на php. Я изучал параметры по умолчанию, поэтому я сделал эту функцию.
function doFoo($name = "johnny"){
echo "Hello $name" . "<br />";
}
Я сделал эти звонки
doFoo();
doFoo("ted");
doFoo("ted", 22);
Первые два напечатали то, что ожидалось, т.е.
Hello johnny
Hello ted
но третий звонок тоже напечатан
Hello ted
Я ожидал ошибки, ведь функция создана для одного аргумента, тогда как я вызываю ее с двумя аргументами.
Почему не было ошибки?
PHP не выдает ошибку при перегрузке функции.
поскольку функции PHP поддерживают переменное количество параметров.
Не неправильно передавать функции больше аргументов, чем необходимо.
Вы получите ошибку, только если передадите несколько аргументов.
function test($arg1) {
var_dump($arg1);
}
test();
Выше приведёт к следующей ошибке:
Uncaught ArgumentCountError: слишком мало аргументов для работы...
Если вы хотите получить первый аргумент плюс все остальные аргументы, переданные функции, вы можете сделать:
function test($arg1, ...$args) {
var_dump($arg1, $args);
}
test('test1', 'test2', 'test3');
В результате чего:
строка (5) массив "test1" (2) {[0] => строка (5) "test2" [1] => строка (5) "test3"}
Он должен печатать только уведомление, но без ошибок. Я думаю, что вы настроили свою отчетность об ошибках, чтобы уведомления не отображались на экране.
Попробуйте вставить это вверху вашего кода:
error_reporting(E_ALL | E_STRICT);