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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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