там бывают такие моменты, когда например нужно указать только $user_id или только $chat_id
Не забываем про SOLID - если у вас есть функция для которой достаточно только $user_id - у неё и должны быть в аргументах только $user_id
Формальный ответ на вопрос: или так как написал
sidni или если много аргументов что-то в стиле
function func(array $options) {
return $options['user_id'];
}
echo func( ['user_id' => '111'] );
но тут легко запутаться в переменных и в итоге вы придете к
trait init {
function __construct(array $data) {
foreach ($data as $key => $value) {
if (property_exists(__CLASS__, $key)) {
$this->$key = $value;
} else {
throw new \Exception($key . ' undefined');
}
}
}
}
class FuncOptions {
use init;
public $user_id;
public $chat_id;
}
function func(FuncOptions $options) {
return $options->user_id;
}
echo func(new FuncOptions(['user_id' => '111']) );
а там откроете для себя фабрики и прочие паттерны...
так что лучше пишите простые и понятные функции))