РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
818 of 1361 menu

Метод 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,
    который откладывает сохранение элемента кэша
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить