Тобто фіча, яку чекали для ще кращого розуміння 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 не помічає.Тому я дуже засмучений, що їх не додадуть до релізу. А що ви думаєте з цього питання?








