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

Адаптер PdoAdapter

Адаптер PdoAdapter реализует интерфейс AdapterInterface и хранит кеш в реляционной базе данных. Первым параметром передаётся объект PDO или DSN-строка подключения, вторым - имя таблицы, третьим - время жизни элементов в секундах. Адаптер сам создаёт таблицу, если её ещё нет.

Синтаксис

new PdoAdapter(PDO|string $connOrDsn, string $table = 'cache_items', int $defaultLifetime = 0, array $options = [])

Пример

Давайте создадим адаптер и сохраним в кеш строку:

<?php namespace AppService; use SymfonyComponentCacheAdapterPdoAdapter; class CacheService { public function store(): string { $pdo = new PDO('sqlite:' . __DIR__ . '/../../var/cache.db'); $cache = new PdoAdapter($pdo, 'cache_items', 3600); $item = $cache->getItem('user_key'); $item->set('abcde'); $cache->save($item); return $cache->getItem('user_key')->get(); } } ?>

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

"abcde"

Пример

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

<?php namespace AppService; use SymfonyComponentCacheAdapterPdoAdapter; class CacheService { public function check(): array { $pdo = new PDO('sqlite:' . __DIR__ . '/../../var/cache.db'); $cache = new PdoAdapter($pdo); $item = $cache->getItem('article_key'); $item->set('article'); $cache->save($item); $res = [ 'has' => $cache->hasItem('article_key'), 'value' => $cache->getItem('article_key')->get(), ]; $cache->deleteItem('article_key'); $res['after_delete'] = $cache->hasItem('article_key'); return $res; } } ?>

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

["has" => true, "value" => "article", "after_delete" => false]

Пример

Давайте подключим адаптер через DSN-строку и сохраним массив:

<?php namespace AppService; use SymfonyComponentCacheAdapterPdoAdapter; class CacheService { public function storeArray(): array { $cache = new PdoAdapter('sqlite:' . __DIR__ . '/../../var/cache.db', 'cache_items', 3600); $item = $cache->getItem('list_key'); $item->set(['a', 'b', 'c', 'd', 'e']); $cache->save($item); return $cache->getItem('list_key')->get(); } } ?>

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

["a", "b", "c", "d", "e"]

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

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