Метод expiresAfter класса CacheItem
Метод expiresAfter класса CacheItem задаёт срок жизни элемента кэша. Первым параметром передаётся время жизни в секундах или объект DateInterval. После истечения этого срока элемент считается устаревшим и не возвращается из кэша. Метод возвращает сам объект CacheItem, что позволяет выстраивать цепочку вызовов.
Синтаксис
$item->expiresAfter($time);
Пример
Давайте создадим элемент кэша и установим ему время жизни 3600 секунд:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Cache\CacheInterface;
class CacheController extends AbstractController
{
public function index(CacheInterface $cache): Response
{
$item = $cache->getItem('article');
$item->set('hello');
$item->expiresAfter(3600);
$cache->save($item);
return new Response($item->get());
}
}
?>
Результат выполнения кода:
"hello"
Пример
Давайте передадим время жизни как объект DateInterval:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Cache\CacheInterface;
class CacheController extends AbstractController
{
public function index(CacheInterface $cache): Response
{
$item = $cache->getItem('article');
$item->set('abcde');
$item->expiresAfter(new \DateInterval('PT1H'));
$cache->save($item);
return new Response($item->get());
}
}
?>
Результат выполнения кода:
"abcde"
Пример
Давайте передадим null, чтобы элемент хранился бессрочно:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Cache\CacheInterface;
class CacheController extends AbstractController
{
public function index(CacheInterface $cache): Response
{
$item = $cache->getItem('user');
$item->set('abcde');
$item->expiresAfter(null);
$cache->save($item);
return new Response($item->get());
}
}
?>
Результат выполнения кода:
"abcde"