getAliases() as $alias){ self::$aliasMap[mb_strtolower($alias)] = $member; } } public static function fromString(string $str) : ?self{ self::checkInit(); return self::$aliasMap[mb_strtolower($str)] ?? null; } /** * @param string[] $aliases */ private function __construct( string $enumName, private string $englishName, private Translatable $translatableName, private array $aliases = [] ){ $this->Enum___construct($enumName); } public function getEnglishName() : string{ return $this->englishName; } public function getTranslatableName() : Translatable{ return $this->translatableName; } /** * @return string[] */ public function getAliases() : array{ return $this->aliases; } //TODO: ability sets per gamemode }