TGViewer
Beer::Code🍺 Beer::Code🍺 @beerphp · 3.64K subscribers
Post #25 1.92K
Дженерики (Generics, templates) уже сегодня.

Наверное один из самых старых обсуждаемых и популярных RFC в PHP. На данный момент на уровне языка реализовать их трудно, как бы сильно разработчикам не хотелось получить этот инструмент.

Однако, используя Psalm (или PHPStan) в ваших проектах, вы можете делать это уже сейчас.

В чем смысл их использования?
Один из частых кейсов, когда нам нужно создать коллекцию объектов. Но создавая её таким образом, мы не можем гарантировать, что внутри все объекты будут типа User. Что делает разработчик в таком случае?

1. Забивает болт.
2. Внутри всех foreach приходится добавлять явную аннотацию /** @var User $user */ и нужно следить не только за типами, но и за аннотациями.
3. Добавляет явную проверку
$user instanceof User.

Для таких случаев у Psalm есть @template. Вот так может выглядеть ваша коллекция.

@template T — всё равно что согласно RFC написать Collection<T>. Это означает, что любая ссылка на докблок T, должна рассматриваться как параметр этого типа.

@psalm-param class-string<T> $type — указываем, что параметры должны быть строкой класса определенного типа.

Теперь каждая коллекция ожидает аргумент своего типа. Это избавляет вас от лишних проверок, необходимости явно указывать @var или создавать классы коллекций для каждого типа объекта.

В случае несоблюдения этих контрактов, статический анализатор выкинет ERROR. Если вы пользуетесь PHPStorm, то он обязательно вам подскажет об ошибке и без запуска psalm.

Короче, этот инструмент отлично работает и давно используется многими разработчиками, так что не нужно ждать, а можно использовать его уже сейчас ;)

#PHP #middle #psalm #source
More from @beerphp
  1. Sep 27, 2026Сувора QA Конференція: AI в тестуванні Друзі, буду спікером на онлайн конфі, котра стартує…
  2. Sep 22, 2026Anthropic випустила Opus 5.5 За словами Anthropic, на більшості задач вона працює на рівні…
  3. Sep 21, 2026Доречі, цього тижня буду проводити НОВИЙ воркшоп Harness Engineering - 24 і 26 вересня. Од…
  4. Sep 21, 2026Хочу поділитись своєю мотивацією На тому тижні був воркшоп Agentic Engineering Workflow Ко…
  5. Sep 20, 2026Post #198
  6. Sep 14, 2026Не можу не поділитись, вчора отримав такий відгук Це прям паливо заради якого хочеться про…
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 →