Skip to content

Commit 8b6099d

Browse files
authored
[11.x] Allows enum_value() to be use in standalone illuminate/collections (#53871)
* [11.x] Allows `enum_value()` to be use in standalone `illuminate/collections` fixes #53867 Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * Update ModelInspector.php * Update functions.php * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> --------- Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
1 parent a9832e0 commit 8b6099d

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

src/Illuminate/Collections/functions.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
*/
1818
function enum_value($value, $default = null)
1919
{
20-
return transform($value, fn ($value) => match (true) {
20+
return match (true) {
2121
$value instanceof \BackedEnum => $value->value,
2222
$value instanceof \UnitEnum => $value->name,
2323

24-
default => $value,
25-
}, $default ?? $value);
24+
default => $value ?? value($default),
25+
};
2626
}
2727
}

src/Illuminate/Database/Eloquent/ModelInspector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ protected function getColumnDefault($column, $model)
393393
{
394394
$attributeDefault = $model->getAttributes()[$column['name']] ?? null;
395395

396-
return enum_value($attributeDefault, $column['default']);
396+
return enum_value($attributeDefault) ?? $column['default'];
397397
}
398398

399399
/**

tests/Support/SupportEnumValueFunctionTest.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,25 @@
1111

1212
class SupportEnumValueFunctionTest extends TestCase
1313
{
14-
public function test_it_can_handle_enums_value()
15-
{
16-
$this->assertSame('A', enum_value(TestEnum::A));
17-
18-
$this->assertSame(1, enum_value(TestBackedEnum::A));
19-
$this->assertSame(2, enum_value(TestBackedEnum::B));
20-
21-
$this->assertSame('A', enum_value(TestStringBackedEnum::A));
22-
$this->assertSame('B', enum_value(TestStringBackedEnum::B));
23-
}
24-
2514
#[DataProvider('scalarDataProvider')]
2615
public function test_it_can_handle_enum_value($given, $expected)
2716
{
2817
$this->assertSame($expected, enum_value($given));
2918
}
3019

20+
public function test_it_can_fallback_to_use_default_if_value_is_null()
21+
{
22+
$this->assertSame('laravel', enum_value(null, 'laravel'));
23+
$this->assertSame('laravel', enum_value(null, fn () => 'laravel'));
24+
}
25+
3126
public static function scalarDataProvider()
3227
{
28+
yield [TestEnum::A, 'A'];
29+
yield [TestBackedEnum::A, 1];
30+
yield [TestBackedEnum::B, 2];
31+
yield [TestStringBackedEnum::A, 'A'];
32+
yield [TestStringBackedEnum::B, 'B'];
3333
yield [null, null];
3434
yield [0, 0];
3535
yield ['0', '0'];

0 commit comments

Comments
 (0)