Статические методы перечислений

В перечислениях разрешено объявлять статические методы. Статические методы в самом перечислении в первую очередь выступают в роли альтернативных конструкторов. Например:

<?php

enum Size
{
    case Small;
    case Medium;
    case Large;

    public static function fromLength(int $cm): self
    {
        return match(true) {
            $cm < 50 => self::Small,
            $cm < 100 => self::Medium,
            default => self::Large,
        };
    }
}

var_dump(Size::fromLength(50));

Статические методы разрешено объявлять общедоступными, закрытыми или защищёнными, хотя на практике закрытые и защищённые методы эквивалентны, поскольку наследование не разрешено.