File tree 3 files changed +29
-0
lines changed
3 files changed +29
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types=1 );
2
+
3
+ namespace DeepCopy \f012 ;
4
+
5
+ enum Suit: string
6
+ {
7
+ case Hearts = 'Hearts ' ;
8
+ case Diamonds = 'Diamonds ' ;
9
+ case Clubs = 'Clubs ' ;
10
+ case Spades = 'Spades ' ;
11
+ }
Original file line number Diff line number Diff line change @@ -140,6 +140,11 @@ private function recursiveCopy($var)
140
140
return $ var ;
141
141
}
142
142
143
+ // PHP 8.1 Enum
144
+ if (function_exists ('enum_exists ' ) && enum_exists ($ var ::class)) {
145
+ return $ var ;
146
+ }
147
+
143
148
// Object
144
149
return $ this ->copyObject ($ var );
145
150
}
Original file line number Diff line number Diff line change 19
19
use DeepCopy \f008 ;
20
20
use DeepCopy \f009 ;
21
21
use DeepCopy \f011 ;
22
+ use DeepCopy \f012 \Suit ;
22
23
use DeepCopy \Filter \KeepFilter ;
23
24
use DeepCopy \Filter \SetNullFilter ;
24
25
use DeepCopy \Matcher \PropertyNameMatcher ;
@@ -495,6 +496,18 @@ public function test_it_ignores_uninitialized_typed_properties()
495
496
$ this ->assertFalse (isset ($ copy ->foo ));
496
497
}
497
498
499
+ /**
500
+ * @requires PHP 8.1
501
+ */
502
+ public function test_it_keeps_enums ()
503
+ {
504
+ $ enum = Suit::Clubs;
505
+
506
+ $ copy = (new DeepCopy ())->copy ($ enum );
507
+
508
+ $ this ->assertSame ($ enum , $ copy );
509
+ }
510
+
498
511
private function assertEqualButNotSame ($ expected , $ val )
499
512
{
500
513
$ this ->assertEquals ($ expected , $ val );
You can’t perform that action at this time.
0 commit comments