PHP 8.0 (листопад 2020) - один з найбільших релізів мови. Головне:
Мова:
- Іменовані аргументи -
f(limit: 10). - Constructor property promotion - властивості в параметрах конструктора.
- Union-типи -
int|string, плюс типmixedі тип поверненняstatic. match- вираз зі строгим порівнянням і без провалювання.- Nullsafe-оператор
?->. - Атрибути -
#[Route('/users')]замість анотацій у PHPDoc. throwяк вираз -$user ?? throw new NotFound().catchбез змінної -catch (TimeoutException).
Суворіша поведінка:
- Порівняння числа з рядком:
0 == 'abc'теперfalse. - Помилки замість попереджень: багато внутрішніх функцій кидають
TypeErrorчиValueErrorпри неправильних аргументах, а арифметика з нечисловим рядком -TypeError. - Узгоджені сигнатури вбудованих функцій і перевірка сумісності методів при успадкуванні.
Нові функції: str_contains(), str_starts_with(), str_ends_with(), get_debug_type(), fdiv().
Продуктивність: JIT-компілятор (для обчислювальних задач; типовому веб-застосунку дає небагато) і загальні оптимізації рушія.
Чому це важливо на співбесіді: більшість сучасного PHP-коду спирається саме на ці можливості, а суворіші правила PHP 8 - часта причина проблем при оновленні старих застосунків з PHP 7.