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; } /** @var string */ private $englishName; /** @var string */ private $translationKey; /** @var string[] */ private $aliases; /** * @param string[] $aliases */ private function __construct(string $enumName, string $englishName, string $translationKey, array $aliases = []){ $this->Enum___construct($enumName); $this->englishName = $englishName; $this->translationKey = $translationKey; $this->aliases = $aliases; } public function getEnglishName() : string{ return $this->englishName; } public function getTranslationKey() : string{ return "%" . $this->translationKey; } /** * @return string[] */ public function getAliases() : array{ return $this->aliases; } //TODO: ability sets per gamemode }