Hacker News Digest

Тег: #php

Постов: 3

PHP compile time generics: yay or nay? (thephp.foundation)

Кратко:
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 разрабатывала «ассоциированные типы» и поняла, что их легко переформулировать как ограниченные обобщения.

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

by moebrowne • 07 августа 2025 г. в 11:49 • 86 points

ОригиналHN

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

Комментарии (50)

  • В обсуждении разбираются плюсы и минусы добавления дженериков в PHP.
  • Участники спорят, не приведёт ли это к «размагничиванию» типов, и объясняют разницу между reified (типы сохраняются в рантайме, как в C#) и erased (типы стираются, как в Java) дженериками.
  • Поднимается вопрос: почему class Repo<T> {} труднее реализовать, чем class BlogPostRepo extends BaseRepo<BlogPost> {}.
  • Многие разработчики просят хотя бы строго типизированные массивы, считая их более полезными, чем полноценные дженерики.
  • Часть команды уже использует PHPStan и strict_types, считая этого достаточным без изменений ядра языка.

PHP 8.5 adds pipe operator (thephp.foundation) 🔥 Горячее 💬 Длинная дискуссия

by lemper • 05 августа 2025 г. в 04:13 • 429 points

ОригиналHN

#php#programming-languages

Комментарии (268)

The first typed programming language where I've seen pipe operator |> in action was in F#. You can write something like: sum 1 2 |> multiply 3 and it works because |> pushes the output of the left expression as the last parameter into the right-hand function. multiply has to be d

PHP: The Toyota Corolla of programming (deprogrammaticaipsum.com) 💬 Длинная дискуссия

by secstate • 04 августа 2025 г. в 13:49 • 184 points

ОригиналHN

#php#programming

Комментарии (190)

Java is more akin to the Corolla. Utterly insipid (by design), lacking in refinements compared to competitors like the Mazda3, and made for people who just see it as a way to get from point A to point B.PHP is the Hyundai Elantra of programming. It used to be popular because of l