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,
        };
    }
}

var_dump(Tamanho::fromLength(50));

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