Метод save класса Cache
Метод save класса Cache сохраняет
элемент кэша CacheItem в хранилище.
Первым параметром передаётся объект элемента кэша,
который нужно сохранить. Метод возвращает true
в случае успеха и false при ошибке.
Перед сохранением элементу можно задать значение
через метод set и срок жизни через
expiresAfter или expiresAt.
Синтаксис
$cache->save(CacheItemInterface $item): bool
Пример
Давайте получим элемент кэша, зададим ему значение и сохраним в хранилище:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(CacheInterface $cache): Response
{
$item = $cache->getItem('article_key');
$item->set('article');
$res = $cache->save($item);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте зададим элементу срок жизни в один час и сохраним его:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class ArticleController extends AbstractController
{
#[Route('/article/ttl', name: 'article_ttl')]
public function ttl(CacheInterface $cache): Response
{
$item = $cache->getItem('article_ttl');
$item->set('hello');
$item->expiresAfter(3600);
$res = $cache->save($item);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте сохраним элемент и затем прочитаем его
через метод getItem:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class ArticleController extends AbstractController
{
#[Route('/article/read', name: 'article_read')]
public function read(CacheInterface $cache): Response
{
$item = $cache->getItem('article_read');
$item->set('abcde');
$cache->save($item);
$item = $cache->getItem('article_read');
$res = $item->get();
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
"abcde"
Пример
Давайте проверим, что элемент действительно попал
в кэш, с помощью метода hasItem:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class ArticleController extends AbstractController
{
#[Route('/article/has', name: 'article_has')]
public function has(CacheInterface $cache): Response
{
$item = $cache->getItem('article_has');
$item->set('user');
$cache->save($item);
$res = $cache->hasItem('article_has');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Смотрите также
-
класс
Cache,
который управляет элементами кэша -
метод
getItem,
который получает элемент кэша по ключу -
метод
hasItem,
который проверяет наличие элемента в кэше -
метод
saveDeferred,
который откладывает сохранение элемента кэша