PHPMiddleExperience
Какие версии, возможности или изменения экосистемы PHP важно учитывать на собеседованиях в 2026 году?
В 2026 году важны PHP 8.3–8.4: typed class constants, property hooks, asymmetric visibility, улучшенный JIT, Fibers для async и обязательный Composer 2 с platform requirements.
Актуальные версии PHP в 2026 году
На момент 2026 года активно поддерживаются PHP 8.2 (security fixes до декабря 2026), PHP 8.3 (active support) и PHP 8.4 (вышел в ноябре 2024, active support). PHP 8.1 перешёл в security-only режим. PHP 7.x — EOL, использование в новых проектах недопустимо.
Ключевые изменения PHP 8.x, важные на интервью
- PHP 8.0:
matchexpression, named arguments,nullsafe operator?->, constructor property promotion,str_contains()/str_starts_with()/str_ends_with(), JIT компилятор,union types. - PHP 8.1:
Enum,readonlyproperties,Fibers,intersection types,neverreturn type,array_is_list(). - PHP 8.2:
readonly classes,Disjunctive Normal Form (DNF) types,true/false/nullкак standalone types, deprecation динамических свойств. - PHP 8.3: Typed class constants (
const int VERSION = 1),json_validate(), readonly improvements,#[Override]атрибут, улучшения вRandomizer. - PHP 8.4: Property hooks (вычисляемые свойства с
get/set), asymmetric visibility (public protected(set)),newбез скобок в выражениях, обновлённый DOM API.
Примеры современного синтаксиса
<?php
declare(strict_types=1);
// PHP 8.1: Enum + readonly
enum Status: string {
case Active = 'active';
case Inactive = 'inactive';
}
readonly class OrderId {
public function __construct(public int $value) {}
}
// PHP 8.3: typed class constant
class Config {
const string APP_ENV = 'production';
}
// PHP 8.4: property hooks
class Temperature {
public float $celsius {
get => $this->kelvin - 273.15;
set => $this->kelvin = $value + 273.15;
}
public function __construct(private float $kelvin) {}
}
Экосистема и инструменты
- Composer 2.x — обязателен, поддерживает
platformrequirements и параллельную загрузку. - PHPStan 2.x — статический анализ, уровни 0–9, интеграция с Blade/Twig через extensions.
- Rector 2.x — автоматический апгрейд кода, правила для каждой версии PHP.
- PHP-CS-Fixer 3.x — форматирование по PSR-12 и собственным ruleset.
- Symfony 7.x / Laravel 11.x — актуальные мажорные версии фреймворков, требуют PHP 8.2+.
- FrankenPHP — новый PHP-сервер на Go с worker mode (аналог Swoole, но без расширений).
Что устарело и опасно упоминать как текущее
- Функции
mysql_*— удалены в PHP 7.0, использовать PDO или MySQLi. ereg_*regex функции — удалены в PHP 7.0.- Динамические свойства без
#[AllowDynamicProperties]— deprecated в 8.2, будут выдавать ошибку. - Передача
nullв non-nullable параметры — deprecated в 8.1, Error в 9.0.
Подводные камни
- JIT в PHP даёт прирост только для CPU-intensive кода (математика, ML-инференс), для типичных web-приложений с IO прирост минимален.
- Fibers — не многопоточность: один поток, кооперативное переключение; ReactPHP и Amp используют event loop поверх Fibers.
- Readonly class в PHP 8.2 не позволяет клонировать с изменёнными свойствами без обходных решений.
- Property hooks в PHP 8.4 несовместимы с некоторыми ORM (Doctrine требует обновления маппинга).
- DNF types (PHP 8.2) не поддерживаются в PHPStan ниже 1.9 — важно проверить версию анализатора.
- Asymmetric visibility (PHP 8.4) конфликтует с reflection-based serialization в старых версиях Symfony Serializer.
- FrankenPHP worker mode держит приложение в памяти между запросами — нужно явно сбрасывать состояние, как в Swoole.
- Composer
platform.phpвcomposer.jsonдолжен соответствовать реальной версии PHP в production, иначе зависимости резолвятся некорректно.
What hurts your answer
- Рассказывать устаревший подход как актуальную практику
- Не отличать личный legacy-опыт от состояния экосистемы в 2026 году
- Игнорировать migration notes и deprecated API
What they're listening for
- Понимает актуальное состояние PHP
- Отличает современные практики от legacy-подходов
- Учитывает миграции, deprecated API и совместимость