Новые возможности PHP 8.1
Официальная документация: релиз PHP 8.1
1. Перечисления (Enums)
Нативная поддержка перечислений.
enum Status {
case Draft;
case Published;
case Archived;
}
2. Readonly-свойства
Свойства, которые нельзя изменить после инициализации.
class BlogData {
public readonly Status $status;
public function __construct(Status $status) {
$this->status = $status;
}
}
3. First-class Callable Syntax
Упрощённый синтаксис для получения ссылки на любую функцию.
$fn = strlen(...);
4. Fibers
Способ создания «зелёных потоков» — легковесных корутин для неблокирующего ввода-вывода и асинхронных задач.
5. new в инициализаторах
Объекты теперь могут использоваться в качестве значений параметров по умолчанию, статических переменных и констант.
public function __construct(
Logger $logger = new NullLogger(),
) {}
6. Intersection Types
Позволяют объявить, что параметр должен реализовывать несколько интерфейсов.
public function count(Countable&Iterator $it) { ... }
7. Тип возврата never
Используется для функций, которые всегда выбрасывают исключение или завершают выполнение.
function redirect(string $url): never {
header('Location: ' . $url);
exit;
}