devouted / symfony-as-cached-attribute
About
1.0.4
2025-04-06 22:02 UTC
Requires
- php: ^8.2
- psr/cache: ^3.0
- symfony/cache: ^6.4
- symfony/config: ^6.4
- symfony/console: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/framework-bundle: ^6.4
- symfony/http-foundation: ^6.4
- symfony/http-kernel: ^6.4
- symfony/routing: ^6.4
- symfony/runtime: ^6.4
- symfony/serializer-pack: ^1.3
- symfony/yaml: ^6.4
Requires (Dev)
- phpunit/phpunit: ^12.0
- symfony/browser-kit: ^6.4
- symfony/css-selector: ^6.4
- symfony/phpunit-bridge: ^6.4
- symfony/test-pack: ^1.0
- symfony/var-dumper: ^6.4
This package is auto-updated.
Last update: 2025-09-06 22:55:35 UTC
README
Installation
composer require devouted/symfony-as-cached-attribute
Usage
add to your services.yaml
services: Devouted\AsCachedAttribute\Listener\CachedResponseListener: arguments: [ '@cache.app' ] tags: - { name: kernel.event_listener, event: kernel.controller_arguments } - { name: kernel.event_listener, event: kernel.response }
and in action that needs to be cached:
#[AsCachedResponse] public function __invoke(ServiceAppQuery $query): ServiceAppPresenter { }
or
#[AsCachedResponse] public function someAction(Request $request): Response { return Response(); }
Extend your cache to be parametrized by request params, just add #[AsCachedRequestParameter]:
#[AsCachedResponse] public function someAction(#[MapRequestPayload] SomeDTO $someDTO): Response { return Response(); } class SomeDTO{ public function __construct() { #[AsCachedRequestParameter] public int $someId, public string $someString } }
the #[AsCachedRequestParameter] is used to mark what should be used to build cache key for uniqueness for given request