cache/illuminate-adapter
This package exposes an Illuminate cache store through PSR-6 and PSR-16, with tag support and hierarchical keys. Version 2 supports Illuminate 11 through 13. Pass any Illuminate\Contracts\Cache\Store implementation to the pool constructor.
CacheItemPoolInterface (Doctrine ORM second-level cache, Symfony components, certain HTTP/SDK clients), this is the cheapest path to satisfy it without replacing Laravel's Cache facade or reconfiguring .env/config/cache.php.Illuminate\Cache\Store today, move PSR-6-aware consumers over first, and defer any larger caching refactor. Useful as a de-risking step on a roadmap where a cache rewrite is otherwise unowned and unscheduled.Cache:: calls, so a future move (Redis → DynamoDB, Laravel → Symfony, monolith → service) touches configuration instead of business logic.ArrayStore gives a deterministic, interface-based cache in unit tests, which reduces flaky test surface in suites that currently hit a real store.user:123:*, product:category:*) where key-prefix bookkeeping gets error-prone.Consider it when all of the following hold:
Illuminate\Cache store (redis, array, file, database) and want to keep it that way.Look elsewhere — or do nothing — when:
symfony/cache (with its own Laravel bridge) or a first-party PSR-6 implementation you own, both of which give you versioning discipline, docs, and a security-response story this package does not demonstrate.rememberForever semantics, Cache::lock(), or store-specific quirks that a PSR-6 surface won't faithfully proxy.For executives (one paragraph): "A small, free, open-source bridge that lets our Laravel app's existing cache serve code written against the PHP caching standard. It's roughly a hundred lines under a permissive license, so the financial and technical downside is negligible — the only cost is a decision. It's worth doing only if a specific library we already depend on demands the standard interface; otherwise it's complexity with no payoff. It does not require a project, a budget line, or a migration program — it's a configuration-level call inside work already underway. I'd recommend we make it a per-team decision with a rule attached: use it, but vendor it, so we're not dependent on a lightly maintained package."
For engineering: "This wraps an Illuminate\Cache\Store (Redis, array, file, database) in a PSR-6 pool — two lines, no changes to config/cache.php, no changes to existing Cache:: call sites. Two things to verify before merging: the store's tag and multi-key behavior matches what our PSR-6 consumer assumes, and the package is compatible with our Laravel/PHP versions, since support isn't documented. Copy the adapter into our codebase rather than taking a hard dependency — it's small enough to own, which removes the maintenance risk entirely and keeps our options open. Benchmark the pool against direct Cache:: calls if the path is hot."
For architects: "Choose this if cache-interface standardization is on the roadmap for reasons that already exist; reject it if it's being proposed as the reason to standardize. The real trade-off is a thin, unowned abstraction versus direct coupling to Laravel's cache API. Both are defensible; the wrong answer is adopting it without naming the PSR-6 consumer that justifies it."
How can I help you explore Laravel packages today?