Метод clear класса Cache
Метод clear класса Cache полностью удаляет все записи из кэш-хранилища.
Он не принимает параметров и возвращает bool: значение true в случае успешной очистки
и false при ошибке. Метод очищает весь пул кэша, связанный с текущим адаптером,
включая все ключи и их значения. Если нужно удалить только одну запись, используйте метод delete.
Синтаксис
public function clear(): bool
Пример
Давайте создадим кэш, сохраним в него несколько значений, а затем полностью очистим хранилище:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
class CacheController extends AbstractController
{
#[Route('/cache/clear', name: 'cache_clear')]
public function clear(): Response
{
$cache = new FilesystemAdapter();
$item1 = $cache->getItem('key1');
$item1->set('value1');
$cache->save($item1);
$item2 = $cache->getItem('key2');
$item2->set('value2');
$cache->save($item2);
$res = $cache->clear();
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим, что после вызова clear сохранённые ранее элементы действительно исчезли:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
class CacheController extends AbstractController
{
#[Route('/cache/clear-check', name: 'cache_clear_check')]
public function clearCheck(): Response
{
$cache = new FilesystemAdapter();
$item = $cache->getItem('user');
$item->set('hello');
$cache->save($item);
$cache->clear();
$after = $cache->getItem('user');
return new Response(var_export($after->isHit(), true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте очистим кэш с использованием тегированного кэша и убедимся в успешности операции:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\Cache\Adapter\TagAwareAdapter;
class CacheController extends AbstractController
{
#[Route('/cache/clear-tagged', name: 'cache_clear_tagged')]
public function clearTagged(): Response
{
$cache = new TagAwareAdapter(new ArrayAdapter());
$item = $cache->getItem('article');
$item->set('abcde');
$item->tag('articles');
$cache->save($item);
$res = $cache->clear();
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Смотрите также
-
класс
Cache,
который предоставляет базовые методы работы с кэшем -
метод
delete,
который удаляет одну запись из кэша -
метод
getItem,
который возвращает элемент кэша по ключу -
класс
TagAwareCache,
который поддерживает инвалидацию по тегам