Cacher des données avec le service Symfony CacheItemPoolInterface
Publié le 14/02/2023 • Actualisé le 14/02/2023
Dans ce bout de code, nous voyons comment cacher des données avec le service Symfony CacheItemPoolInterface. Dans un snippet précédent, nous avons vu comment cacher des données grâce au service implémentant CacheInterface. Ça fonctionne bien, mais ça nous donne peu de contrôle sur la mise en cache. Pour des cas plus avancé, on peut utiliser le service CacheItemPoolInterface, par exemple, si nous voulons faire certaines actions spécifiques, si un cache est trouvé ou pas pour une clé de cache donnée.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use Psr\Cache\CacheItemPoolInterface;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*
* @property CacheItemPoolInterface $cacheItemPool
*/
trait Snippet243Trait
{
public function snippet243(): void
{
$cacheItem = $this->cacheItemPool
->getItem('my_cache_key')
->expiresAfter(\DateInterval::createFromDateString('10 seconds'))
;
if ($cacheItem->isHit()) {
echo 'There was a hit for the cache key: '.$cacheItem->get();
} else {
echo 'No cache hit. Saving cache item.';
$cacheItem->set('cache_value');
$this->cacheItemPool->save($cacheItem);
}
// That's it! 😁
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Snippet aléatoire
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉