@@ -61,14 +61,15 @@ public function __construct(array $adapters, int $defaultLifetime = 0)
61
61
$ this ->adapterCount = \count ($ this ->adapters );
62
62
63
63
$ this ->syncItem = \Closure::bind (
64
- static function ($ sourceItem , $ item ) use ($ defaultLifetime ) {
64
+ static function ($ sourceItem , $ item , $ sourceMetadata = null ) use ($ defaultLifetime ) {
65
+ $ sourceItem ->isTaggable = false ;
66
+ $ sourceMetadata = $ sourceMetadata ?? $ sourceItem ->metadata ;
67
+ unset($ sourceMetadata [CacheItem::METADATA_TAGS ]);
68
+
65
69
$ item ->value = $ sourceItem ->value ;
66
- $ item ->expiry = $ sourceItem ->expiry ;
70
+ $ item ->expiry = $ sourceMetadata [CacheItem:: METADATA_EXPIRY ] ?? $ sourceItem ->expiry ;
67
71
$ item ->isHit = $ sourceItem ->isHit ;
68
- $ item ->metadata = $ sourceItem ->metadata ;
69
-
70
- $ sourceItem ->isTaggable = false ;
71
- unset($ sourceItem ->metadata [CacheItem::METADATA_TAGS ]);
72
+ $ item ->metadata = $ item ->newMetadata = $ sourceItem ->metadata = $ sourceMetadata ;
72
73
73
74
if (0 < $ sourceItem ->defaultLifetime && $ sourceItem ->defaultLifetime < $ defaultLifetime ) {
74
75
$ defaultLifetime = $ sourceItem ->defaultLifetime ;
@@ -103,7 +104,7 @@ public function get(string $key, callable $callback, float $beta = null, array &
103
104
$ value = $ this ->doGet ($ adapter , $ key , $ callback , $ beta , $ metadata );
104
105
}
105
106
if (null !== $ item ) {
106
- ($ this ->syncItem )($ lastItem = $ lastItem ?? $ item , $ item );
107
+ ($ this ->syncItem )($ lastItem = $ lastItem ?? $ item , $ item, $ metadata );
107
108
}
108
109
109
110
return $ value ;
0 commit comments