Перейти к основному содержимому

Новые возможности PHP 8.0

Официальная документация: релиз PHP 8.0

1. Именованные аргументы​

Позволяют указывать только нужные параметры и не зависеть от их порядка.

htmlspecialchars($string, double_encode: false);

2. Атрибуты (Annotations)​

Использование нативного синтаксиса вместо PHPDoc для метаданных.

#[Route("/api/posts/{id}", methods: ["GET"])]
public function getId($id) { ... }

3. Продвижение свойств в конструкторе​

Объединение объявления свойств класса и конструктора в одну конструкцию.

class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}

4. Union Types​

Объявление нескольких возможных типов для переменной.

public function __construct(
private int|float $number
) {}

5. Выражение Match​

Более безопасная замена switch() со строгим сравнением и возвратом значения.

echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
}; // "This is what I expected"

6. Nullsafe-оператор (?->)​

Автоматически проверяет на null на каждом шаге цепочки вызовов.

$country = $session?->user?->getAddress()?->country;

7. JIT-компиляция (Just-In-Time)​

Введены два движка (Tracing и Function) для повышения производительности долгоработающих скриптов.

8. Новые функции и классы​

  • str_contains(), str_starts_with(), str_ends_with()
  • fdiv()
  • get_debug_type()
  • Класс WeakMap