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

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

<?php

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

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

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