File tree Expand file tree Collapse file tree 3 files changed +45
-0
lines changed Expand file tree Collapse file tree 3 files changed +45
-0
lines changed Original file line number Diff line number Diff line change 21
21
"php" : " ^7.3|^8.0"
22
22
},
23
23
"require-dev" : {
24
+ "nesbot/carbon" : " ^2.61" ,
24
25
"pestphp/pest" : " ^1.21.3" ,
25
26
"phpstan/phpstan" : " ^1.8.2" ,
26
27
"symfony/var-dumper" : " ^5.4.11"
Original file line number Diff line number Diff line change 3
3
namespace Laravel \SerializableClosure \Serializers ;
4
4
5
5
use Closure ;
6
+ use DateTimeInterface ;
6
7
use Laravel \SerializableClosure \Contracts \Serializable ;
7
8
use Laravel \SerializableClosure \SerializableClosure ;
8
9
use Laravel \SerializableClosure \Support \ClosureScope ;
@@ -460,6 +461,12 @@ protected function mapByReference(&$data)
460
461
461
462
$ instance = $ data ;
462
463
464
+ if ($ data instanceof DateTimeInterface) {
465
+ $ this ->scope [$ instance ] = $ data ;
466
+
467
+ return ;
468
+ }
469
+
463
470
if ($ data instanceof UnitEnum) {
464
471
$ this ->scope [$ instance ] = $ data ;
465
472
Original file line number Diff line number Diff line change 1
1
<?php
2
2
3
+ use Carbon \Carbon ;
4
+ use Carbon \CarbonImmutable ;
3
5
use Laravel \SerializableClosure \SerializableClosure ;
4
6
use Laravel \SerializableClosure \Serializers \Signed ;
5
7
use Laravel \SerializableClosure \Support \ReflectionClosure ;
@@ -401,6 +403,41 @@ function () {
401
403
expect ($ f (new Model ))->toBeInstanceOf (Model::class);
402
404
})->with ('serializers ' );
403
405
406
+ test ('serializes used dates ' , function ($ _ , $ date ) {
407
+ $ closure = function () use ($ date ) {
408
+ return $ date ;
409
+ };
410
+
411
+ $ u = s ($ closure );
412
+ $ r = $ u ();
413
+
414
+ expect ($ r )->toEqual ($ date );
415
+ })->with ('serializers ' )->with ([
416
+ new DateTime ,
417
+ new DateTimeImmutable ,
418
+ new Carbon ,
419
+ new CarbonImmutable ,
420
+ ]);
421
+
422
+ test ('serializes with used object date properties ' , function ($ _ , $ date ) {
423
+ $ obj = new ObjSelf ;
424
+ $ obj ->o = $ date ;
425
+
426
+ $ closure = function () use ($ obj ) {
427
+ return $ obj ;
428
+ };
429
+
430
+ $ u = s ($ closure );
431
+ $ r = $ u ();
432
+
433
+ expect ($ r ->o )->toEqual ($ date );
434
+ })->with ('serializers ' )->with ([
435
+ new DateTime ,
436
+ new DateTimeImmutable ,
437
+ new Carbon ,
438
+ new CarbonImmutable ,
439
+ ]);
440
+
404
441
class A
405
442
{
406
443
protected static function aStaticProtected ()
You can’t perform that action at this time.
0 commit comments