Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Junior PHP 8+

Що таке іменовані аргументи і коли вони корисні?

Іменовані аргументи (PHP 8.0) дозволяють передавати аргументи за іменем параметра, а не лише за позицією.

// Позиційно: що означає true? а 0?
htmlspecialchars($text, ENT_QUOTES, 'UTF-8', false);

// Іменовано
htmlspecialchars($text, double_encode: false);

str_pad(string: 'x', length: 5, pad_type: STR_PAD_LEFT);

Переваги:

  • Читабельність для булевих прапорців і «магічних» чисел: new Invoice(paid: true, sendEmail: false) замість new Invoice(true, false).
  • Пропуск необов'язкових параметрів: передати лише останній, не перелічуючи значення за замовчуванням для всіх попередніх.
  • Будь-який порядок: іменовані аргументи можна передавати не в порядку оголошення.
  • Разом з constructor promotion дають зручні value objects і DTO: new Address(city: 'Київ', street: 'Хрещатик').

Правила:

  • Спершу позиційні, потім іменовані: f(1, b: 2) - так; f(a: 1, 2) - ні.
  • Один параметр не можна передати двічі.
  • Невідоме ім'я - помилка.
  • Для variadic-параметрів (...$args) іменовані аргументи збираються в масив з рядковими ключами.

Застереження для авторів бібліотек: з іменованими аргументами назва параметра стає частиною публічного API. Перейменування $str на $string у новій версії зламає код, що викликав функцію іменовано. Тому в бібліотеках назви параметрів змінюють так само обережно, як і назви методів.

Докладніше в документації: Іменовані аргументи

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання