Адаптер 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,
который хранит кеш в памяти