TGViewer
Пых Пых @phpyh · 7.83K subscribers
Post #673 8.41K
Пых Почему позднее связывание статическое? В PHP есть такая фича, как позднее статическое связывание (late static binding или LSB). Она позволяет обратиться к вызываемому/инстанциированному классу в контексте наследования. Когда-то давно для работы с LSB использовались…
self вместо static в финальных классах

Изначально я садился писать этот пост, но решил вас предварительно разогреть... 😉

Представьте себе такую ситуацию:


interface A
{
public static function new(): static;
}

final class B implements A
{
public static function new(): self
{
return new self();
}
}


Есть ли тут ошибка? Поначалу кажется, что есть. В интерфейсе сказано: нужно вернуть инстанс класса позднего статического связывания, а реализация использует более широкий тип self и поэтому нарушает LSP. PHP тоже так считает: https://3v4l.org/qWDQY.

А теперь обратим внимание, что класс B финальный! В цепочке наследования после B уже никого не может быть, это самый "поздний" возможный класс. В финальном классе всегда self =:= static. Так что ошибки на самом деле нет!

Недавно подписчик Пыха @m1chael19 закинул PR с исправлением этого недоразумения. Фикс посчитали очень логичным и смерджили в 8.5 без RFC. Поздравим Михаила с первым контрибьютом в PHP!

https://github.com/php/php-src/pull/17724
https://3v4l.org/qWDQY/rfc#vgit.master
3v4l.org Online PHP editor | output for qWDQY Run your php code online; get statistics, vld output and compare output from all versions.
  • 🔥 93
  • 🎉 40
  • 👍 23
  • 🤔 3
More from @phpyh
  1. Sep 30, 2026🍺 BeerPHP AI Moscow Кажется, «неделя PHP» потихоньку превращается в месяц PHP. 😅 Будет 2…
  2. Sep 28, 2026Запустили Пыхник и неделю PHP! Залетайте на первый открытый доклад от Дмитрия Dantes про к…
  3. Sep 15, 2026Сейчас один человек с AI может выполнять работу целого IT-отдела. Только хуёво
  4. Sep 12, 2026Спасибо за заявки! Всем напишу в понедельник. Осталось 1 место.
  5. Sep 11, 2026Хардкорный курс асинхронного PHP https://hardcourse.ru/php/async
  6. Sep 11, 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 →