Современный PHP: что изменилось
Вопрос
Чем современный PHP 8.3 отличается от PHP 5 и 7, и что из новинок вы реально используете?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Производительность: PHP 7 ускорил движок вдвое, OPcache и JIT
Типизация: скалярные типы, union types, typed properties, readonly, enum
Синтаксис: match, nullsafe, именованные аргументы, продвижение свойств, стрелочные функции
Ошибки движка как исключения Error, строже числовые строки и сравнения
Атрибуты вместо аннотаций в PHPDoc
Экосистема: Composer, PSR, статический анализ
Что могут спросить следом
- Какие новинки 8.x ломают обратную совместимость?
- Зачем readonly-классы?
Разбор
Современный PHP это быстрый язык со строгой системой типов. PHP 7 переписал внутренние структуры и примерно удвоил скорость, OPcache стал стандартом, а в PHP 8 появился JIT.
В типах изменилось почти всё: скалярные типы и возвращаемые типы, типизированные свойства, union types, readonly, перечисления. В своём коде я использую enum для статусов вместо строковых констант, readonly-классы для DTO и объектов-значений, продвижение свойств в конструкторе, match вместо switch, nullsafe-оператор и именованные аргументы для функций с множеством необязательных параметров.
Поведение стало строже: ошибки движка стали исключениями Error, сравнение чисел со строками больше не даёт абсурдов вроде 0 == "abc", а нечисловые строки в арифметике бросают TypeError. Аннотации в комментариях заменяются атрибутами, которые читает рефлексия. Вокруг этого зрелая экосистема: Composer, стандарты PSR, PHPStan и Psalm, Rector для автоматического обновления кода.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.