列挙型と static メソッド

列挙型は、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 は同じものです。 なぜなら、継承が許されていないからです。

関連キーワード:  メソッド, static, private, protected, 定数, Enum, 理由, public, 継承,