Адаптер FilesystemAdapter
Класс FilesystemAdapter реализует интерфейс
AdapterInterface и сохраняет элементы кеша
в виде файлов на диске. Это самый простой адаптер,
который не требует установки дополнительных
расширений или серверов. Первым параметром
передаётся директория для хранения файлов кеша,
вторым - время жизни элемента в секундах,
третьим - права доступа к создаваемым файлам.
Если директория не указана, используется
временная папка системы.
Синтаксис
new FilesystemAdapter(
string $namespace = '',
int $defaultLifetime = 0,
string $directory = null
)
Пример
Давайте создадим адаптер и сохраним в кеш
значение по ключу 'user':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$cache = new FilesystemAdapter();
$item = $cache->getItem('user');
$item->set('abcde');
$cache->save($item);
$res = $cache->getItem('user')->get();
return new Response($res);
}
}
?>
Результат выполнения кода:
abcde
Пример
Давайте укажем директорию для файлов кеша и время жизни элемента:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$cache = new FilesystemAdapter(
'app',
3600,
$this->getParameter('kernel.cache_dir')
);
$item = $cache->getItem('article');
$item->set('hello');
$item->expiresAfter(3600);
$cache->save($item);
$res = $cache->getItem('article')->get();
return new Response($res);
}
}
?>
Результат выполнения кода:
hello
Пример
Давайте проверим наличие элемента в кеше
с помощью метода hasItem:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$cache = new FilesystemAdapter();
$item = $cache->getItem('user');
$item->set('abcde');
$cache->save($item);
$res = $cache->hasItem('user');
return new Response($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
true
Пример
Давайте удалим элемент из кеша с помощью
метода deleteItem:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$cache = new FilesystemAdapter();
$item = $cache->getItem('user');
$item->set('abcde');
$cache->save($item);
$cache->deleteItem('user');
$res = $cache->hasItem('user');
return new Response($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
false
Смотрите также
-
класс
Cache,
который предоставляет удобный фасад для работы с кешем -
метод
getItem,
который возвращает элемент кеша по ключу -
метод
save,
который сохраняет элемент кеша в хранилище -
адаптер
RedisAdapter,
который хранит кеш в Redis