Repository
class Repository implements ArrayAccess, Repository, RawReadable mixin Store
Traits
Constants
| FLEXIBLE_CREATED_KEY_PREFIX |
The cache key prefix used to track when a flexible cache value was last refreshed. |
Properties
| static protected array | $macros | The registered string macros. |
from Macroable |
| protected Store | $store | The cache store implementation. |
|
| protected Dispatcher|null | $events | The event dispatcher implementation. |
|
| protected int|null | $default | The default number of seconds to store items. |
|
| protected array | $config | The cache store configuration. |
|
| static protected Closure|null | $unserializableClassHandler | The callback to invoke when an unserializable class is encountered. |
Methods
Get the number of seconds until the given DateTime.
Get the "available at" UNIX timestamp.
If the given value is an interval, convert it to a DateTime instance.
Given a start time, format the total run time for human readability.
Mix another object into the class.
Dynamically handle calls to the class.
Handle dynamic calls into macros or pass missing methods to the store.
Determine if an item exists in the cache.
Determine if an item doesn't exist in the cache.
Retrieve an item from the cache by key.
Retrieve multiple items from the cache by key.
Retrieve multiple items from the cache by key.
Retrieve an item from the cache and delete it.
Retrieve a string item from the cache.
Retrieve an integer item from the cache.
Retrieve a float item from the cache.
Retrieve a boolean item from the cache.
Retrieve an array item from the cache.
Store an item in the cache.
Store an item in the cache.
Store multiple items in the cache for a given number of seconds.
Store an item in the cache if the key does not exist.
Increment the value of an item in the cache.
Decrement the value of an item in the cache.
Store an item in the cache indefinitely.
Get an item from the cache, or execute the given Closure and store the result.
Get an item from the cache, or execute the given Closure and store the result.
Retrieve an item for remember operations without unwrapping sentinels.
Get an item from the cache, or execute the given Closure and store the result.
Get an item from the cache, or execute the given Closure and store the result forever.
Get an item from the cache, or execute the given Closure and store the result forever.
Get an item from the cache, or execute the given Closure and store the result forever.
Retrieve an item from the cache by key, refreshing it in the background if it is stale.
Retrieve an item from the cache by key, refreshing it in the background if it is stale.
Set the expiration of a cached item; null TTL will retain the item forever.
Execute a callback while holding an atomic lock on a cache mutex to prevent overlapping calls.
Funnel a callback for a maximum number of simultaneous executions.
Remove an item from the cache.
No description
Delete multiple items from the cache by key.
No description
Flush all locks from the cache store.
Begin executing a new tags operation if the store supports it.
Determine if the current store supports tags.
Determine if the current store supports flushing locks.
Get the default cache time.
Set the default cache time in seconds.
Get the event dispatcher instance.
Register a callback to be invoked when an unserializable class is encountered.
Get the cache store name.
Determine if a cached value exists.
Retrieve an item from the cache by key.
Store an item in the cache for the default time.
Remove an item from the cache.
Handle a result for the "many" method.
Store multiple items in the cache indefinitely.
Format the key for a cache item.
Handle a cache value that contains an incomplete class.
Calculate the number of seconds for the given TTL.
Retrieve an item from the cache by key without unwrapping sentinels.
Retrieve multiple items from the cache by key without unwrapping sentinels.
Flush all static state.
Clone cache repository instance.
Details
in
InteractsWithTime at line 17
protected int
secondsUntil(DateInterval|DateTimeInterface|int $delay)
Get the number of seconds until the given DateTime.
in
InteractsWithTime at line 29
protected int
availableAt(DateInterval|DateTimeInterface|int|null $delay = 0)
Get the "available at" UNIX timestamp.
in
InteractsWithTime at line 41
protected DateTimeInterface|int
parseDateInterval(DateInterval|DateTimeInterface|int|null $delay)
If the given value is an interval, convert it to a DateTime instance.
in
InteractsWithTime at line 57
protected int
currentTime()
Get the current system time as a UNIX timestamp.
in
InteractsWithTime at line 65
protected string
runTimeForHumans(float $startTime, float|null $endTime = null)
Given a start time, format the total run time for human readability.
in
Macroable at line 28
static void
macro(string $name, callable|object $macro)
Register a custom macro.
Boot-only. Macros persist in a static property for the worker lifetime and apply to every subsequent call on the macroable class.
in
Macroable at line 41
static void
mixin(object $mixin, bool $replace = true)
Mix another object into the class.
Boot-only. Delegates to macro() for each method; registered macros persist in a static property for the worker lifetime.
in
Macroable at line 57
static bool
hasMacro(string $name)
Check if macro is registered.
in
Macroable at line 68
static void
flushMacros()
Flush the existing macros.
Boot or tests only. Clears worker-wide macros; concurrent coroutines may resolve different methods depending on timing.
in
Macroable at line 78
static mixed
__callStatic(string $method, array $parameters)
Dynamically handle calls to the class.
at line 1233
mixed
__call(string $method, array $parameters)
Handle dynamic calls into macros or pass missing methods to the store.
at line 91
__construct(Store $store, array $config = [])
Create a new cache repository instance.
at line 100
bool
has(array|UnitEnum|string $key)
Determine if an item exists in the cache.
at line 108
bool
missing(UnitEnum|string $key)
Determine if an item doesn't exist in the cache.
at line 122
mixed
get(array|UnitEnum|string $key, mixed $default = null)
Retrieve an item from the cache by key.
at line 138
array
many(array $keys)
Retrieve multiple items from the cache by key.
Items not found in the cache will have a null value.
at line 159
iterable
getMultiple(iterable $keys, mixed $default = null)
Retrieve multiple items from the cache by key.
at line 184
mixed
pull(UnitEnum|string $key, mixed $default = null)
Retrieve an item from the cache and delete it.
at line 198
string
string(UnitEnum|string $key, callable|string|null $default = null)
Retrieve a string item from the cache.
at line 219
int
integer(UnitEnum|string $key, callable|int|null $default = null)
Retrieve an integer item from the cache.
at line 244
float
float(UnitEnum|string $key, callable|float|null $default = null)
Retrieve a float item from the cache.
at line 269
bool
boolean(UnitEnum|string $key, callable|bool|null $default = null)
Retrieve a boolean item from the cache.
at line 292
array
array(UnitEnum|string $key, callable|array|null $default = null)
Retrieve an array item from the cache.
at line 309
bool
put(array|UnitEnum|string $key, mixed $value, DateInterval|DateTimeInterface|int|null $ttl = null)
Store an item in the cache.
at line 351
bool
set(UnitEnum|string $key, mixed $value, DateInterval|DateTimeInterface|int|null $ttl = null)
Store an item in the cache.
at line 359
bool
putMany(array $values, DateInterval|DateTimeInterface|int|null $ttl = null)
Store multiple items in the cache for a given number of seconds.
at line 400
bool
setMultiple(iterable $values, DateInterval|DateTimeInterface|int|null $ttl = null)
No description
at line 408
bool
add(UnitEnum|string $key, mixed $value, DateInterval|DateTimeInterface|int|null $ttl = null)
Store an item in the cache if the key does not exist.
at line 446
bool|int
increment(UnitEnum|string $key, int $value = 1)
Increment the value of an item in the cache.
at line 456
bool|int
decrement(UnitEnum|string $key, int $value = 1)
Decrement the value of an item in the cache.
at line 466
bool
forever(UnitEnum|string $key, mixed $value)
Store an item in the cache indefinitely.
at line 495
mixed
remember(UnitEnum|string $key, Closure|DateInterval|DateTimeInterface|int|null $ttl, Closure $callback)
Get an item from the cache, or execute the given Closure and store the result.
at line 512
array
rememberWithWarmth(UnitEnum|string $key, Closure|DateInterval|DateTimeInterface|int|null $ttl, Closure $callback)
Get an item from the cache, or execute the given Closure and store the result.
at line 535
protected mixed
getRawForRemember(UnitEnum|string $key)
Retrieve an item for remember operations without unwrapping sentinels.
at line 554
mixed
rememberNullable(UnitEnum|string $key, DateInterval|DateTimeInterface|int|null $ttl, Closure $callback)
Get an item from the cache, or execute the given Closure and store the result.
Unlike remember(), a null return from $callback is stored (as the internal NullSentinel::VALUE marker) and returned as null on subsequent calls rather than triggering re-execution. Public accessors (get, many, pull, has, etc.) unwrap the sentinel automatically — callers never see it.
at line 568
mixed
sear(UnitEnum|string $key, Closure $callback)
Get an item from the cache, or execute the given Closure and store the result forever.
at line 584
mixed
searNullable(UnitEnum|string $key, Closure $callback)
Get an item from the cache, or execute the given Closure and store the result forever.
Alias for rememberForeverNullable().
at line 598
mixed
rememberForever(UnitEnum|string $key, Closure $callback)
Get an item from the cache, or execute the given Closure and store the result forever.
at line 625
mixed
rememberForeverNullable(UnitEnum|string $key, Closure $callback)
Get an item from the cache, or execute the given Closure and store the result forever.
Unlike rememberForever(), a null return from $callback is stored (as the internal NullSentinel::VALUE marker) and returned as null on subsequent calls rather than triggering re-execution. Public accessors unwrap the sentinel automatically.
at line 640
mixed
flexible(UnitEnum|string $key, array $ttl, mixed $callback, array|null $lock = null, bool $alwaysDefer = false)
Retrieve an item from the cache by key, refreshing it in the background if it is stale.
at line 707
mixed
flexibleNullable(UnitEnum|string $key, array $ttl, mixed $callback, array|null $lock = null, bool $alwaysDefer = false)
Retrieve an item from the cache by key, refreshing it in the background if it is stale.
Unlike flexible(), a null return from $callback is stored (as the internal NullSentinel::VALUE marker) and returned as null on subsequent calls rather than triggering re-execution. Public accessors unwrap the sentinel automatically.
Inherits flexible()'s support matrix: unsupported on any-mode tagged caches (tags()->flexibleNullable() on a TagMode::Any store throws the same BadMethodCallException that tags()->flexible() does, because flexible() internally reads via manyRaw() (initial batched read) and getRaw() (refresh closure), both of which AnyTaggedCache overrides to throw in any-mode).
at line 715
bool
touch(UnitEnum|string $key, DateInterval|DateTimeInterface|int|null $ttl = null)
Set the expiration of a cached item; null TTL will retain the item forever.
at line 739
mixed
withoutOverlapping(UnitEnum|string $key, callable $callback, int $lockFor = 0, int $waitFor = 10, string|null $owner = null)
Execute a callback while holding an atomic lock on a cache mutex to prevent overlapping calls.
at line 749
ConcurrencyLimiterBuilder
funnel(UnitEnum|string $name)
Funnel a callback for a maximum number of simultaneous executions.
at line 763
bool
forget(UnitEnum|string $key)
Remove an item from the cache.
at line 781
bool
delete(UnitEnum|string $key)
No description
at line 791
bool
deleteMultiple(iterable $keys)
Delete multiple items from the cache by key.
at line 804
bool
clear()
No description
at line 827
bool
flushLocks()
Flush all locks from the cache store.
at line 860
TaggedCache
tags(mixed $names)
Begin executing a new tags operation if the store supports it.
at line 888
bool
supportsTags()
Determine if the current store supports tags.
at line 896
bool
supportsFlushingLocks()
Determine if the current store supports flushing locks.
at line 904
int|null
getDefaultCacheTime()
Get the default cache time.
at line 916
Repository
setDefaultCacheTime(int|null $seconds)
Set the default cache time in seconds.
Boot-only. Persists on the cached repository for the worker lifetime and applies to every subsequent write that falls back to the default TTL; per-request use races across coroutines.
at line 926
Store
getStore()
Get the cache store implementation.
at line 938
Repository
setStore(Store $store)
Set the cache store implementation.
Boot-only. Replaces the backing store on the cached repository for the worker lifetime; per-request use races and every concurrent read/write through this repository would hit the wrong store.
at line 948
Dispatcher|null
getEventDispatcher()
Get the event dispatcher instance.
at line 960
void
setEventDispatcher(Dispatcher $events)
Set the event dispatcher instance.
Boot or tests only. Persists on the cached repository for the worker lifetime; per-request use races across coroutines. Reached by CacheManager::refreshEventDispatcher() from Event::fake() / fakeFor().
at line 971
static void
handleUnserializableClassUsing(callable|null $callback)
Register a callback to be invoked when an unserializable class is encountered.
Boot or tests only. The callback persists for the worker lifetime and affects every subsequent cache read.
at line 981
string|null
getName()
Get the cache store name.
at line 991
bool
offsetExists(string|UnitEnum $key)
Determine if a cached value exists.
at line 1001
mixed
offsetGet(string|UnitEnum $key)
Retrieve an item from the cache by key.
at line 1012
void
offsetSet(string|UnitEnum $key, mixed $value)
Store an item in the cache for the default time.
at line 1022
void
offsetUnset(string|UnitEnum $key)
Remove an item from the cache.
at line 1030
protected mixed
handleManyResult(array $keys, string $key, mixed $value)
Handle a result for the "many" method.
at line 1045
protected bool
putManyForever(array $values)
Store multiple items in the cache indefinitely.
at line 1061
protected string
itemKey(string $key)
Format the key for a cache item.
at line 1069
protected mixed
handleIncompleteClass(string $key, mixed $value)
Handle a cache value that contains an incomplete class.
at line 1087
protected int
getSeconds(DateInterval|DateTimeInterface|int $ttl)
Calculate the number of seconds for the given TTL.
at line 1103
protected void
event(string $eventClass, Closure $event)
Fire an event for this cache instance.
at line 1129
mixed
getRaw(UnitEnum|string $key)
| internal | For cache-layer internal use (sentinel-aware hit detection in remember/rememberForever/flexible, plus the RawReadable seam that wrapper stores like MemoizedStore / FailoverStore use). App code should use get(), which unwraps NullSentinel::VALUE to null. Fires the same RetrievingKey / CacheHit / CacheMissed events as get(), so observability is unchanged — cached-null entries still fire CacheHit, but the event payload is unwrapped to null to match the public API. Delegates to $this->store->getRaw() when the underlying store implements RawReadable (wrapper stores that need to preserve sentinels across their own internal indirection). Otherwise calls $this->store->get(), which plain stores already implement as a raw read. |
Retrieve an item from the cache by key without unwrapping sentinels.
at line 1182
array
manyRaw(array $keys)
| internal | For cache-layer internal use. App code should use many(), which unwraps sentinels via handleManyResult(). Batched raw-read counterpart to getRaw(). Used by flexible() to preserve its single batched store read (avoiding a hot-path regression from splitting into sequential get() calls), while still returning raw sentinels so the caller can distinguish "cached sentinel = hit" from "genuinely absent = miss". Applies itemKey() to each key so tag-namespacing works correctly on TaggedCache / AllTaggedCache (which prepend hash('xxh128', $tagNamespace) . ':'). AnyTaggedCache overrides this method to throw, preserving the any-mode invariant that reads through tags are rejected. Fires RetrievingManyKeys + per-key CacheHit/CacheMissed events, matching the event shape of public many() calls. Delegates to $this->store->manyRaw() when the underlying store implements RawReadable (MemoizedStore / FailoverStore). Otherwise calls $this->store->many(), which plain stores already implement as a raw read. |
Retrieve multiple items from the cache by key without unwrapping sentinels.
at line 1224
static void
flushState()
Flush all static state.
at line 1245
__clone()
Clone cache repository instance.