@@ -31,7 +31,7 @@ trait ContractsTrait
31
31
doGet as private contractsGet;
32
32
}
33
33
34
- private $ callbackWrapper = [LockRegistry::class, ' compute ' ] ;
34
+ private $ callbackWrapper ;
35
35
private $ computing = [];
36
36
37
37
/**
@@ -41,8 +41,16 @@ trait ContractsTrait
41
41
*/
42
42
public function setCallbackWrapper (?callable $ callbackWrapper ): callable
43
43
{
44
+ if (!isset ($ this ->callbackWrapper )) {
45
+ $ this ->callbackWrapper = \Closure::fromCallable ([LockRegistry::class, 'compute ' ]);
46
+
47
+ if (\in_array (\PHP_SAPI , ['cli ' , 'phpdbg ' ], true )) {
48
+ $ this ->setCallbackWrapper (null );
49
+ }
50
+ }
51
+
44
52
$ previousWrapper = $ this ->callbackWrapper ;
45
- $ this ->callbackWrapper = $ callbackWrapper ?? function (callable $ callback , ItemInterface $ item , bool &$ save , CacheInterface $ pool , \Closure $ setMetadata , ?LoggerInterface $ logger ) {
53
+ $ this ->callbackWrapper = $ callbackWrapper ?? static function (callable $ callback , ItemInterface $ item , bool &$ save , CacheInterface $ pool , \Closure $ setMetadata , ?LoggerInterface $ logger ) {
46
54
return $ callback ($ item , $ save );
47
55
};
48
56
@@ -82,6 +90,10 @@ static function (CacheItem $item, float $startTime, ?array &$metadata) {
82
90
$ this ->computing [$ key ] = $ key ;
83
91
$ startTime = microtime (true );
84
92
93
+ if (!isset ($ this ->callbackWrapper )) {
94
+ $ this ->setCallbackWrapper ($ this ->setCallbackWrapper (null ));
95
+ }
96
+
85
97
try {
86
98
$ value = ($ this ->callbackWrapper )($ callback , $ item , $ save , $ pool , function (CacheItem $ item ) use ($ setMetadata , $ startTime , &$ metadata ) {
87
99
$ setMetadata ($ item , $ startTime , $ metadata );
0 commit comments