Ранее:
Оглавления для удобной навигации по новым PHP 8.1 фичам (клик для перехода по якорю):
PHP 8.1: Enums - перечисления
Перечисления удобнее, чем просто константы:
<?php declare(strict_types=1); namespace App\Data\Enum; enum Mode: string { case CLASSIC = 'classic'; case KILLER = 'killer'; case DAILY = 'daily'; case EVENT = 'event'; }
Enum представляет собой объект, что дает гибкость при использовании enum в аргументах. Если раньше в качестве аргумента передавали скалярную константу int/string, что зачастую может требовать дополнительной валидации внутри метода, то теперь в typehint можно указать сам Enum.
Кроме того, в тело enum можно помещать вспомогательные методы и использовать в них $this
указатель на текущее значение.
Enum может быть двух типов:
- Pure enum. Имеет только pure cases без скалярных значений.
-
Backed enum. Имеет значения в
case
, как в примере выше с enum Mode.
PHP 8.1: Readonly class properties
<?php class AbTestDto { public readonly string $name; public readonly string $distributionEnabled; public readonly array $abGroups; }
Благодаря readonly, можно 1) гарантировать иммутабельность объекта в рантайме. 2) Отпадает необходимость в psalm-аннотациях таких как @psalm-immutable
Комментарии 0