AnyModeTaggedCache
abstract class AnyModeTaggedCache extends TaggedCache
Tagged cache for any-mode tag semantics.
Tags are invalidation indexes only: items live under their plain cache keys, tags are recorded on writes, and flushing any one tag removes every item written with it. Reads, existence checks, per-key deletes, and TTL adjustments are not tag operations in this mode.
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. |
from Repository |
| protected Dispatcher|null | $events | The event dispatcher implementation. |
from Repository |
| protected int|null | $default | The default number of seconds to store items. |
from Repository |
| protected array | $config | The cache store configuration. |
from Repository |
| static protected Closure|null | $unserializableClassHandler | The callback to invoke when an unserializable class is encountered. |
from Repository |
| protected TagSet | $tags | The tag set instance. |
from TaggedCache |
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.
Dynamically handle calls to the class.
Determine if an item exists 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 a plain-key item for remember operations.
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.
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.
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.
Begin executing a new tags operation if the store supports it.
Determine if the current store supports flushing locks.
Set the default cache time in seconds.
Register a callback to be invoked when an unserializable class is encountered.
Store an item in the cache for the default time.
Handle a result for the "many" method.
Handle a cache value that contains an incomplete class.
Calculate the number of seconds for the given TTL.
No description
No description
Retrieve a plain-key item without exposing reads through the any-mode API.
Remove a plain-key item without exposing deletes through the any-mode API.
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.
in
Macroable at line 103
mixed
__call(string $method, array $parameters)
Dynamically handle calls to the class.
in
TaggedCache at line 27
__construct(Store $store, TagSet $tags)
Create a new tagged cache instance.
at line 83
bool
has(array|UnitEnum|string $key)
Determine if an item exists in the cache.
in
Repository at line 108
bool
missing(UnitEnum|string $key)
Determine if an item doesn't exist in the cache.
at line 35
mixed
get(array|UnitEnum|string $key, mixed $default = null)
Retrieve an item from the cache by key.
at line 59
array
many(array $keys)
Retrieve multiple items from the cache by key.
in
Repository at line 159
iterable
getMultiple(iterable $keys, mixed $default = null)
Retrieve multiple items from the cache by key.
at line 96
mixed
pull(UnitEnum|string $key, mixed $default = null)
Retrieve an item from the cache and delete it.
in
Repository at line 198
string
string(UnitEnum|string $key, callable|string|null $default = null)
Retrieve a string item from the cache.
in
Repository at line 219
int
integer(UnitEnum|string $key, callable|int|null $default = null)
Retrieve an integer item from the cache.
in
Repository at line 244
float
float(UnitEnum|string $key, callable|float|null $default = null)
Retrieve a float item from the cache.
in
Repository at line 269
bool
boolean(UnitEnum|string $key, callable|bool|null $default = null)
Retrieve a boolean item from the cache.
in
Repository at line 292
array
array(UnitEnum|string $key, callable|array|null $default = null)
Retrieve an array item from the cache.
in
Repository at line 309
bool
put(array|UnitEnum|string $key, mixed $value, DateInterval|DateTimeInterface|int|null $ttl = null)
Store an item in the cache.
in
Repository at line 351
bool
set(UnitEnum|string $key, mixed $value, DateInterval|DateTimeInterface|int|null $ttl = null)
Store an item in the cache.
in
TaggedCache at line 37
bool
putMany(array $values, DateInterval|DateTimeInterface|int|null $ttl = null)
Store multiple items in the cache for a given number of seconds.
in
Repository at line 400
bool
setMultiple(iterable $values, DateInterval|DateTimeInterface|int|null $ttl = null)
No description
in
Repository 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.
in
TaggedCache at line 55
bool|int
increment(UnitEnum|string $key, int $value = 1)
Increment the value of an item in the cache.
in
TaggedCache at line 65
bool|int
decrement(UnitEnum|string $key, int $value = 1)
Decrement the value of an item in the cache.
in
Repository at line 466
bool
forever(UnitEnum|string $key, mixed $value)
Store an item in the cache indefinitely.
in
Repository 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.
in
Repository 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 156
protected mixed
getRawForRemember(UnitEnum|string $key)
Retrieve a plain-key item for remember operations.
in
Repository 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.
in
Repository 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.
in
Repository 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().
in
Repository 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.
in
Repository 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.
in
Repository 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.
in
Repository 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 122
bool
touch(UnitEnum|string $key, DateInterval|DateTimeInterface|int|null $ttl = null)
Set the expiration of a cached item.
in
Repository 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.
in
Repository at line 749
ConcurrencyLimiterBuilder
funnel(UnitEnum|string $name)
Funnel a callback for a maximum number of simultaneous executions.
at line 109
bool
forget(UnitEnum|string $key)
Remove an item from the cache.
in
Repository at line 781
bool
delete(UnitEnum|string $key)
No description
in
Repository at line 791
bool
deleteMultiple(iterable $keys)
Delete multiple items from the cache by key.
in
TaggedCache at line 91
bool
clear()
Remove all items from the cache.
A tagged cache's PSR clear() scope is the tag set, not the whole store.
in
Repository at line 827
bool
flushLocks()
Flush all locks from the cache store.
in
Repository at line 860
TaggedCache
tags(mixed $names)
Begin executing a new tags operation if the store supports it.
in
Repository at line 888
bool
supportsTags()
Determine if the current store supports tags.
in
Repository at line 896
bool
supportsFlushingLocks()
Determine if the current store supports flushing locks.
in
Repository at line 904
int|null
getDefaultCacheTime()
Get the default cache time.
in
Repository 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.
in
Repository at line 926
Store
getStore()
Get the cache store implementation.
in
Repository 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.
in
Repository at line 948
Dispatcher|null
getEventDispatcher()
Get the event dispatcher instance.
in
Repository 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().
in
Repository 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.
in
Repository at line 981
string|null
getName()
Get the cache store name.
in
Repository at line 991
bool
offsetExists(string|UnitEnum $key)
Determine if a cached value exists.
in
Repository at line 1001
mixed
offsetGet(string|UnitEnum $key)
Retrieve an item from the cache by key.
in
Repository at line 1012
void
offsetSet(string|UnitEnum $key, mixed $value)
Store an item in the cache for the default time.
in
Repository at line 1022
void
offsetUnset(string|UnitEnum $key)
Remove an item from the cache.
in
Repository at line 1030
protected mixed
handleManyResult(array $keys, string $key, mixed $value)
Handle a result for the "many" method.
in
Repository at line 1045
protected bool
putManyForever(array $values)
Store multiple items in the cache indefinitely.
in
Repository at line 1061
protected string
itemKey(string $key)
Format the key for a cache item.
in
Repository at line 1069
protected mixed
handleIncompleteClass(string $key, mixed $value)
Handle a cache value that contains an incomplete class.
in
Repository at line 1087
protected int
getSeconds(DateInterval|DateTimeInterface|int $ttl)
Calculate the number of seconds for the given TTL.
in
TaggedCache at line 107
protected void
event(string $eventClass, Closure $event)
Fire an event for this cache instance.
at line 46
mixed
getRaw(UnitEnum|string $key)
No description
at line 70
array
manyRaw(array $keys)
No description
in
Repository at line 1224
static void
flushState()
Flush all static state.
in
Repository at line 1245
__clone()
Clone cache repository instance.
in
TaggedCache at line 75
bool
flush()
Remove all items from the cache.
in
TaggedCache at line 99
TagSet
getTags()
Get the tag set instance.
at line 133
protected mixed
getPlainRaw(UnitEnum|string $key)
Retrieve a plain-key item without exposing reads through the any-mode API.
at line 164
protected bool
forgetPlainKey(UnitEnum|string $key)
Remove a plain-key item without exposing deletes through the any-mode API.