Skip to content

Commit 6400de5

Browse files
committed
Make sure CallbackDependency can be serialized
1 parent c78158f commit 6400de5

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/Dependency/CallbackDependency.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace CraftCms\DependencyAwareCache\Dependency;
44

55
use Illuminate\Cache\Repository;
6+
use Laravel\SerializableClosure\SerializableClosure;
67

78
/**
89
* CallbackDependency represents a dependency based on the result of a callback.
@@ -12,15 +13,15 @@
1213
*/
1314
class CallbackDependency extends Dependency
1415
{
15-
private $callback;
16+
private SerializableClosure $callback;
1617

1718
public function __construct(callable $callback)
1819
{
19-
$this->callback = $callback;
20+
$this->callback = new SerializableClosure($callback);
2021
}
2122

2223
protected function generateData(Repository $cache): mixed
2324
{
24-
return ($this->callback)($cache);
25+
return $this->callback->getClosure()($cache);
2526
}
2627
}

tests/Dependency/CallbackDependencyTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,9 @@
3535

3636
expect($dependency->isChanged(DependencyCache::store()))->toBeTrue();
3737
});
38+
39+
it('can be serialized', function () {
40+
$dependency = new CallbackDependency(static fn () => '');
41+
42+
expect(serialize($dependency))->toBeString();
43+
});

0 commit comments

Comments
 (0)