Что нового в PHP 8.1

Оглавления для удобной навигации по новым PHP 8.1 фичам (клик для перехода по якорю):

  1. Enums
  2. Read-only properties

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 может быть двух типов:

  1. Pure enum. Имеет только pure cases без скалярных значений.
  2. 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

 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ