Auto-gegenereerd via Reflection — blijft altijd in sync met src/.
ArrayCache
Framework\Cache\ArrayCacheIn-memory PSR-16 cache. Bedoeld voor tests en korte-levensduur scoping
binnen een enkel request.
8 public methods
clear(): booldelete(string $key): booldeleteMultiple(iterable $keys): boolget(string $key, ?mixed $default = NULL): ?mixedgetMultiple(iterable $keys, ?mixed $default = NULL): iterablehas(string $key): boolset(string $key, ?mixed $value, DateInterval|int|null $ttl = NULL): boolsetMultiple(iterable $values, DateInterval|int|null $ttl = NULL): boolFileCache
Framework\Cache\FileCacheFile-based PSR-16 cache. Eén bestand per item, met TTL als header.
Layout:
<directory>/<sha1(key)>.cache → "<expiresAt>\n<serialized>"
expiresAt = unix timestamp; 0 = nooit verlopen.
__construct(string $directory)8 public methods
clear(): booldelete(string $key): booldeleteMultiple(iterable $keys): boolget(string $key, ?mixed $default = NULL): ?mixedgetMultiple(iterable $keys, ?mixed $default = NULL): iterablehas(string $key): boolset(string $key, ?mixed $value, DateInterval|int|null $ttl = NULL): boolsetMultiple(iterable $values, DateInterval|int|null $ttl = NULL): boolInvalidCacheKey
Framework\Cache\InvalidCacheKey__construct(string $message = '', int $code = 0, ?Throwable $previous = NULL)DynamicCacheBuilder
Framework\Dynamic\Cache\DynamicCacheBuilderPure cache-bouwer voor `DynamicItems.metadata.cache.values.{lang}.*`.
Geen DB, geen state — alleen input → output. Zo kunnen verschillende
IO-paden (warmer, post-save-hook, easyhandling's table-class) dezelfde
regels delen voor:
1. welk veld wel/niet de cache in mag (skip-list + encrypted),
2. hoe taalvrijgestelde velden (`language=''`) gemerged worden met
taalspecifieke waarden — taalspecifiek wint.
Datatype-skiplist gemodelleerd naar
easyhandling.nl/.../Dynamic/Model/DynamicItemsTable.php::shouldCacheFieldValue().
3 public methods
static buildAll(array $fields, iterable $rows, array $languages): arrayBouw cache voor meerdere talen tegelijk uit één rij-set.
static buildForLanguage(array $fields, iterable $rows, string $language): arrayBouw `name → value` voor één taal. Taalspecifieke rows winnen van
`language=''` rows; non-cacheable velden worden weggelaten.
static shouldCache(\DynamicTypeField $field): boolMag deze veldwaarde in de cache landen?
VariantCache
Framework\Image\Cache\VariantCacheSchrijft / leest bytes onder een relative path binnen een root-directory.
Wordt twee keer gebruikt:
- Voor de getransformeerde varianten (`data/cache/img/`)
- Voor geëxtraheerde video-frames (`data/cache/img/frames/`)
Schrijven gaat atomair (tmp-file + rename) zodat een crash midden in de
write geen halve files achterlaat — een halve file zou nginx als geldige
cache-hit serveren en de browser zou corrupt content krijgen.
Path-traversal guard: relative path mag geen `..` of absolute prefix bevatten.
__construct(string $root)4 public methods
exists(string $relativePath): boolpath(string $relativePath): stringread(string $relativePath): ?stringwrite(string $relativePath, string $bytes): void