36 private array $enumMappings = [];
38 public function __construct(){
39 $this->addEnum(DyeColor::class, fn(DyeColor $case) => match ($case) {
40 DyeColor::BLACK =>
"black",
41 DyeColor::BLUE =>
"blue",
42 DyeColor::BROWN =>
"brown",
43 DyeColor::CYAN =>
"cyan",
44 DyeColor::GRAY =>
"gray",
45 DyeColor::GREEN =>
"green",
46 DyeColor::LIGHT_BLUE =>
"light_blue",
47 DyeColor::LIGHT_GRAY =>
"light_gray",
48 DyeColor::LIME =>
"lime",
49 DyeColor::MAGENTA =>
"magenta",
50 DyeColor::ORANGE =>
"orange",
51 DyeColor::PINK =>
"pink",
52 DyeColor::PURPLE =>
"purple",
53 DyeColor::RED =>
"red",
54 DyeColor::WHITE =>
"white",
55 DyeColor::YELLOW =>
"yellow"
64 private function addEnum(
string $class, \Closure $mapper) :
void{
65 $this->enumMappings[$class] =
new StringEnumMap($class, $mapper);
74 if(!isset($this->enumMappings[$class])){
75 throw new \InvalidArgumentException(
"No enum mapping found for class: $class");
80 $map = $this->enumMappings[$class];