Skip to content

devouted/symfony-as-cached-attribute

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AsCachedAttribute

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

About

To extend symfony project with cashed reqest fuctionality

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages