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

Метод getItems класса Cache

Метод getItems класса Cache возвращает набор элементов кеша по переданному массиву ключей. Единственным параметром передаётся массив ключей, а результатом является итерируемая коллекция объектов CacheItem, доступных по тем же ключам.

В отличие от последовательных вызовов getItem, метод getItems позволяет получить сразу несколько элементов за одну операцию, что особенно эффективно для адаптеров с сетевым доступом, например Redis или Memcached.

Синтаксис

public function getItems(array $keys = []): iterable

Пример

Давайте сохраним несколько значений в кеш, а затем прочитаем их одним вызовом getItems:

<?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 CacheController extends AbstractController { #[Route('/cache/items', name: 'cache_items')] public function items(CacheInterface $cache): Response { $cache->get('user_1', fn () => 'abcde'); $cache->get('user_2', fn () => 'article'); $cache->get('user_3', fn () => 'hello'); $res = []; foreach ($cache->getItems(['user_1', 'user_2', 'user_3']) as $key => $item) { $res[$key] = $item->get(); } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

{"user_1":"abcde","user_2":"article","user_3":"hello"}

Пример

Давайте проверим попадание в кеш через метод isHit у каждого полученного элемента:

<?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 CacheController extends AbstractController { #[Route('/cache/hits', name: 'cache_hits')] public function hits(CacheInterface $cache): Response { $cache->get('user_1', fn () => 'abcde'); $res = []; foreach ($cache->getItems(['user_1', 'user_2']) as $key => $item) { $res[$key] = $item->isHit(); } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

{"user_1":true,"user_2":false}

Смотрите также

  • класс Cache,
    который предоставляет доступ к кешу
  • метод getItem,
    который возвращает один элемент кеша
  • метод get,
    который возвращает значение с записью при промахе
  • класс CacheItem,
    который представляет элемент кеша
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить