Метод hasItem класса Cache
Метод hasItem класса Cache проверяет,
существует ли в кэше элемент с указанным ключом.
Первым параметром передаётся ключ элемента в виде строки.
Метод возвращает true, если элемент есть в кэше,
и false в противном случае.
Метод реализует интерфейс CacheInterface
из стандарта PSR-6. Важно понимать, что hasItem
не проверяет срок жизни элемента - если элемент
просрочен, метод всё равно вернёт false.
Синтаксис
public function hasItem(string $key): bool
Пример
Давайте создадим кэш через ArrayAdapter,
сохраним элемент и проверим его наличие:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$cache = new ArrayAdapter();
$item = $cache->getItem('user');
$item->set('abcde');
$cache->save($item);
$res = $cache->hasItem('user');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим наличие элемента с ключом, которого нет в кэше:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$cache = new ArrayAdapter();
$res = $cache->hasItem('article');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте проверим наличие нескольких элементов в цикле:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$cache = new ArrayAdapter();
$item = $cache->getItem('hello');
$item->set('abcde');
$cache->save($item);
$keys = ['hello', 'user', 'article'];
$res = [];
foreach ($keys as $key) {
$res[$key] = $cache->hasItem($key);
}
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
["hello" => true, "user" => false, "article" => false]
Смотрите также
-
класс
Cache,
который управляет элементами кэша -
метод
getItem,
который получает элемент кэша по ключу -
метод
save,
который сохраняет элемент в кэш -
метод
deleteItem,
который удаляет элемент из кэша по ключу