devouted / symfony-as-cached-attribute
About
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/devouted/symfony-as-cached-attribute
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-12-06 23:30:39 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