Перечисления также могут иметь статические методы. Использование статических методов в самом перечислении в первую очередь предназначено для альтернативных конструкторов. Например:
<?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,
};
}
}
?>
Статические методы могут быть общедоступными, закрытыми или защищёнными, хотя на практике закрытые и защищённые эквивалентны, поскольку наследование не допускается.