Skip to content

Commit fa069a8

Browse files
onairmarcEncoreBot
andauthored
Add StaticCache::remember() (#94)
Co-authored-by: EncoreBot <[email protected]>
1 parent 8e7484c commit fa069a8

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

.git-blame-ignore-revs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,4 @@ edb78e6307a371aff090127ce28aae9369605af8
4040
d4b03b64fcfc69e247b12f5f4afa4bd5f90ce5ab
4141
aa3797614d9280deb1b174d4878d484f2695efec
4242
e224e927dabcd3046455985118ed424c43aba054
43+
20e2de4b44af7511cb0eb6e6f71676253b4c2667

.idea/php.xml

Lines changed: 11 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Objects/Support/StaticCache.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace EncoreDigitalGroup\StdLib\Objects\Support;
44

55
use BackedEnum;
6+
use Closure;
67
use EncoreDigitalGroup\StdLib\Objects\Support\Traits\StaticCacheEnabled;
78

89
class StaticCache
@@ -66,6 +67,24 @@ public static function flush(BackedEnum|string|null $partition = null): void
6667
}
6768
}
6869

70+
public static function remember(BackedEnum|string $key, Closure $value, BackedEnum|string $partition = "default"): mixed
71+
{
72+
if (self::disabled()) {
73+
return $value();
74+
}
75+
76+
$partition = self::enum($partition);
77+
78+
if (self::contains($key, $partition)) {
79+
return self::get($key, $partition);
80+
}
81+
82+
$result = $value();
83+
self::add($key, $result, $partition);
84+
85+
return $result;
86+
}
87+
6988
protected static function enum(BackedEnum|string $name): string
7089
{
7190
if ($name instanceof BackedEnum) {

0 commit comments

Comments
 (0)