PHP 8.2.0 Released!

Интерфейс BackedEnum

(PHP 8 >= 8.1.0)

Введение

Интерфейс BackedEnum автоматически применяется движком к типизированным перечислениям. Он не может быть реализован пользовательскими классами. Перечисления не могут переопределять его методы, поскольку реализации по умолчанию предоставляются движком. Доступен только для проверки типа.

Обзор интерфейсов

interface BackedEnum extends UnitEnum {
/* Методы */
public static from(int|string $value): static
public static tryFrom(int|string $value): ?static
/* Наследуемые методы */
public static UnitEnum::cases(): array
}

Содержание

  • BackedEnum::from — Сопоставляет скаляр с экземпляром перечисления
  • BackedEnum::tryFrom — Сопоставляет скаляр с экземпляром перечисления или null
add a note

User Contributed Notes 1 note

up
7
whatuwant
10 months ago
As of PHP 8.1, while `UnitEnum` & `BackedEnum` cannot be implemented by user-defined classes, it seems they can be extended by user-defined interfaces and eventually be implemented by enums.

<?php

interface TestEnumInterface extends \BackedEnum
{
    public function
foo(): string;
}

enum TestEnum: string implements TestEnumInterface
{
    case
CASE_1 = 'case 1';
    case
CASE_2 = 'case 2';

    public function
foo(): string
   
{
        return
'bar';
    }
}

?>
To Top