Hacker News Digest

07 августа 2025 г. в 11:49 • thephp.foundation • ⭐ 86 • 💬 50

OriginalHN

#php#generics#compile-time#interfaces#abstract-classes#type-checking#c##java

PHP compile time generics: yay or nay?

Кратко:
PHP-фонд предлагает реализовать только компиляторные обобщения (generics) для интерфейсов и абстрактных классов.
Синтаксис:

interface Repository<Item> {
    public function find(int $id): Item;
}

class UserRepo implements Repository<User> { … }
  • Все проверки типов происходят на этапе компиляции.
  • Ошибки ловятся до запуска кода.
  • new Repository<User>() по-прежнему невозможно, но и не усложняется.

Почему не полные обобщения?
Полноценные runtime-generics требуют сложного вывода типов и резко замедляют работу, особенно при объединённых типах и массивах.

Откуда идея?

  • 2023-2024: эксперименты Arnaud Le Blanc показали, что 80 % пользы можно получить без 80 % сложностей.
  • 2025: Gina Banyard разрабатывала «ассоциированные типы» и поняла, что их легко переформулировать как ограниченные обобщения.

Вопрос сообществу:
Поддержите ли вы такой вариант и проголосуете ли «за»?