Хорошо, как и все остальные сказали, что то, что вы хотите, не будет возможно в PHP без добавления каких-либо кодовых строк в функцию.
Но вы можете поместить этот кусок кода в начало чтобы получить вашу функциональность:
foreach((new ReflectionFunction(debug_backtrace()[0]["function"]))->getParameters() as $param) {
if(empty(${$param->getName()}) && $param->isOptional())
${$param->getName()} = $param->getDefaultValue();
}
Итак, в основном с помощью debug_backtrace()
Я получаю имя функции, в которой этот код помещен, чтобы затем создать новый ReflectionFunction
, но все аргументы функции.
В цикле я просто проверяю, является ли аргумент функции empty()
И аргумент «необязателен» (означает, что он имеет значение по умолчанию). Если да, я просто присваиваю значение по умолчанию аргументу.