Php, как пропустить аргументы по умолчанию при установке аргументов vardic?Php

Кемеровские программисты php общаются здесь
Anonymous
Php, как пропустить аргументы по умолчанию при установке аргументов vardic?

Сообщение Anonymous »

Хорошо, у меня есть существующий метод:

Код: Выделить всё

public function dbQuery(string $query, bool $flag1 = false, int $flag2 = SOME_DEFAULT, bool $flag3 = false)
теперь я хочу адаптировать его, чтобы можно было передавать значения привязки в качестве аргументов vardic, но не нарушая текущий интерфейс (я знаю, что флаги arg являются антишаблоном), чтобы быть :

Код: Выделить всё

public function dbQuery(string $query, bool $flag1 = false, int $flag2 = SOME_DEFAULT, bool $flag3 = false, mixed ...$params)
как мне затем вызвать dbQuery, сохраняя флаги по умолчанию при передаче параметров?
Я пробовал:
  • Код: Выделить всё

    ->dbQuery('my query', params: [1, 2, 3]);
    , но он отображается как массив в первом аргументе vardic, например. $params = [[1, 2, 3]]
  • Код: Выделить всё

    ->dbQuery('my query', params: ...[1, 2, 3]);
    имеет неверный синтаксис.
  • Код: Выделить всё

    ->dbQuery('my query', ...['params' => [1, 2, 3]]);
    тот же результат, что и у варианта 1.
Ничего подобного использования не показано в:
https://wiki.php.net /rfc/variadics
или https://wiki.php.net/rfc/named_params
хотя в более позднем RFC явно показано, что именованные аргументы по умолчанию перед vardics являются допустимыми подпись, а не как получить доступ к вардикам.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -arguments

Вернуться в «Php»