列挙型は、static メソッドを持つこともできます。 列挙型で static メソッドを使う主な理由は、 コンストラクタの代わりをさせるためです。たとえば、以下のようなものです:
<?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, }; } } ?>
static メソッドには public, private, protected が指定できますが、 列挙型では実際 private と protected は同じものです。 なぜなら、継承が許されていないからです。