File tree Expand file tree Collapse file tree 2 files changed +49
-1
lines changed Expand file tree Collapse file tree 2 files changed +49
-1
lines changed Original file line number Diff line number Diff line change @@ -126,6 +126,24 @@ public static function getBackedEnumOrNull(
126126 );
127127 }
128128
129+ /**
130+ * @template T of BackedEnum
131+ *
132+ * @param array<array-key, mixed> $array
133+ * @param class-string<T> $enumClass
134+ * @param T $default
135+ *
136+ * @return T
137+ */
138+ public static function getBackedEnum (
139+ array $ array ,
140+ string $ key ,
141+ string $ enumClass ,
142+ BackedEnum $ default
143+ ): BackedEnum {
144+ return self ::getBackedEnumOrNull ($ array , $ key , $ enumClass , $ default ) ?? $ default ;
145+ }
146+
129147 /**
130148 * @param array<array-key, mixed> $array
131149 * @param class-string<object> $classString
Original file line number Diff line number Diff line change @@ -296,7 +296,37 @@ public static function get_arr_provider(): array
296296 'enumClass ' => YesNoBackedEnum::class,
297297 ],
298298 YesNoBackedEnum::YES
299- ]
299+ ],
300+ 'get backed enum, invalid value ' => [
301+ 'getBackedEnum ' ,
302+ [
303+ 'array ' => ['key ' => 'invalid ' ],
304+ 'key ' => 'key ' ,
305+ 'enumClass ' => YesNoBackedEnum::class,
306+ 'default ' => YesNoBackedEnum::NO ,
307+ ],
308+ YesNoBackedEnum::NO
309+ ],
310+ 'get backed enum, valid backed enum value ' => [
311+ 'getBackedEnum ' ,
312+ [
313+ 'array ' => ['key ' => YesNoBackedEnum::YES ],
314+ 'key ' => 'key ' ,
315+ 'enumClass ' => YesNoBackedEnum::class,
316+ 'default ' => YesNoBackedEnum::NO ,
317+ ],
318+ YesNoBackedEnum::YES
319+ ],
320+ 'get backed enum, valid string value ' => [
321+ 'getBackedEnum ' ,
322+ [
323+ 'array ' => ['key ' => 'yes ' ],
324+ 'key ' => 'key ' ,
325+ 'enumClass ' => YesNoBackedEnum::class,
326+ 'default ' => YesNoBackedEnum::NO ,
327+ ],
328+ YesNoBackedEnum::YES
329+ ],
300330 ];
301331 }
302332
You can’t perform that action at this time.
0 commit comments