Skip to content

Commit efeab73

Browse files
committed
Allow put Enum instance for Enum::all
1 parent d4661ad commit efeab73

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/Enum.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,14 +164,18 @@ final public function get(string $property)
164164
}
165165

166166
/**
167-
* @param int[]|string[] $values
167+
* @param Enum[]|int[]|string[] $values
168168
*
169169
* @throws ReflectionException
170170
*
171171
* @return static[]
172172
*/
173173
final public static function all(array $values = [], bool $reverse = false, string $property = 'id'): array
174174
{
175+
$values = array_map(static function ($value) {
176+
return $value instanceof Enum ? $value->getId() : $value;
177+
}, $values);
178+
175179
if ('id' === $property) {
176180
$all = array_values(self::getReflection()->getConstants());
177181
} else {

tests/EnumTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ public function testAllMethod(): void
5959
self::assertSame([TestEnum::two()], TestEnum::all(['1'], true));
6060
self::assertSame([TestEnum::one()], TestEnum::all(['2'], true));
6161

62+
self::assertSame([TestEnum::one()], TestEnum::all([TestEnum::one()]));
63+
self::assertSame([TestEnum::two()], TestEnum::all([TestEnum::two()]));
64+
self::assertSame([TestEnum::two()], TestEnum::all([TestEnum::one()], true));
65+
6266
self::assertSame([TestEnum::one(), TestEnum::two()], TestEnum::all(['uno', 'duo'], false, 'identifier'));
6367
self::assertSame([TestEnum::two()], TestEnum::all(['uno'], true, 'identifier'));
6468
}

0 commit comments

Comments
 (0)