TGViewer
KRUHLYK 🇺🇦 KRUHLYK 🇺🇦 @lets_code_ua · 1.33K subscribers
Post #1386 977
А тим часом комʼюніті PHP сказало "Ніт" дженерікам.

Тобто фіча, яку чекали для ще кращого розуміння IDE вашого коду не потрапить в наступний реліз мови.

Якщо ви не знали для чого використовують дженеріки.
Дженеріки (generics) існують, щоб розв'язати один фундаментальний конфлікт: ти хочеш писати код один раз, але працювати з різними типами, не втрачаючи при цьому типобезпеку.
Ті, хто пишуть на TS або C# чи Java добре його (я маю таку надію) знають. Так от, таке хотіли додати в PHP.
Але дженеріки є сенс використовувати для компільованих мов, щоб на моменті білда вам випало мільярд червоних еррорів, що ваше гамно ваші зміни в коді не працюватимуть, бо типи ніфіга не пляшуть.

Але ж пиха в нас мова інтерпритована, тобто вона не збирається в якісь бандли які ОС може запускати і юзати. В нас є інтепритатор мови, який на льоту пояснює компу що відбувається і що той має зробити.

То який тоді практичний сенс від дженеріків в PHP? Я вбачаю один головний — наші IDE могли б ще краще розуміти наш код і нам підсвічвати помилки ще краще.

Або ж інші кейси.

Один синтаксис замість двох мов. Зараз ми читаємо дженерик-клас як дві паралельні системи типів одночасно — PHP-типи в сигнатурах і PHPDoc-типи в докблоках, які часто суперечать: public function pop(): mixed
поруч із @return T (так, я таке декілька разів зустрічав в реальних проєктах). RFC прибирає цей розкол.

Reflection нарешті бачить дженеріки. Зараз ReflectionClass::getName() повертає Collection, а не Collection<TKey, TModel>, тому фреймворки для DI, серіалізації чи обробки атрибутів або перепарсять сорси, або шелять у статичний аналізатор. Новий Reflection API віддає pre-erasure форму прямо з рушія.

PHPStan читає типи з движка, а не з докблоків. Це прибирає "приховану залежність" твого коду від конвенцій PHPDoc, де відмінності між Mago, PHPStan і Psalm в граничних випадках невидимі, доки рефактор не перетне межу, яку інструменти обробляють по-різному.

Парсер ловить помилки.
Зараз @temlate (одрук) — тиха втрата інформації, PHP не помічає.

Тому я дуже засмучений, що їх не додадуть до релізу. А що ви думаєте з цього питання?
PHP.Watch Bound-Erased Generic Types
  • 👍 5
  • 😢 5
  • ❤ 1
More from @lets_code_ua
  1. Oct 3, 2026Мало хто з вас знає, що за освітою я юрист-міжнародник. Магістр міжнародного комерційного…
  2. Oct 2, 2026Там вчора в нашому чаті були дискусії за можливості LLMок в архітектуру. Сьогодні в рамках…
  3. Oct 2, 2026Підтримую! Створюємо петицію?
  4. Oct 2, 2026Пʼятниця ніфіга не пʼятниця сьогодні.
  5. Oct 2, 2026Anthropic завіз моди в Claude Code. Це TypeScript функції, які чіпляються на будь-яку поді…
  6. Oct 1, 2026Post #1709
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 →