TGViewer
Пых Пых @phpyh · 7.86K subscribers
Post #883 7.2K
Наполнение списка при деструктуризации

Иногда из функции надо вернуть кортеж (иммутабельную группу значений), а в DTO смысла нет, потому что это разовая ситуация и непубличное апи.

В этом случае я всегда использую запечатанный list shape, потому что его очень удобно разбирать в переменные при помощи синтаксиса деструктуризации массива: [$a, $b] = $tuple.

Сейчас мне потребовалось в цикле раскидать возвращаемые методом значения по двум спискам. Приятно удивился, что при деструктуризации можно использовать не только [$array['key']] = , но и [$array[]] =.

Упрощённый пример:


interface Thing
{
/**
* @return list{int, string}
*/
public function resolve(): array;
}

/**
* @param iterable<Thing> $things
*/
function app(iterable $things): void
{
$ints = [];
$strings = [];

foreach ($things as $thing) {
[$ints[], $strings[]] = $thing->resolve();
}

var_dump($ints, $strings);
}


PHPStan | Psalm
  • 🔥 65
  • 👍 37
  • 😱 16
  • 👎 5
  • 👀 4
  • ❤ 2
More from @phpyh
  1. Sep 15, 2026Сейчас один человек с AI может выполнять работу целого IT-отдела. Только хуёво
  2. Sep 12, 2026Спасибо за заявки! Всем напишу в понедельник. Осталось 1 место.
  3. Sep 11, 2026Хардкорный курс асинхронного PHP https://hardcourse.ru/php/async
  4. Sep 11, 2026Ещё полчасика надо — сайт готов, расписываю программу! 🙏
  5. Sep 10, 2026Краткое содержание: завтра в 12:00 открываю набор на Хардкорный курс асинхронного PHP с уч…
  6. Sep 10, 2026Post #1011
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →