Métodos estáticos de enumerações

Enumerações também podem ter métodos estáticos. O uso para métodos estáticos na própria enumeração é primariamente para construtores alternativos. Por exemplo:

<?php

enum Tamanho
{
case
Pequeno;
case
Medio;
case
Grande;

public static function
deComprimento(int $cm): self
{
return match(
true) {
$cm < 50 => self::Pequeno,
$cm < 100 => self::Medio,
default =>
self::Grande,
};
}
}
?>

Métodos estáticos podem ser públicos, privados, ou protegidos apesar dos privados e protegidos são equivalentes na prática, pois herança não é permitida.