Метод get класса Cache
Метод get класса Cache возвращает значение из кэша по ключу.
Первым параметром передаётся ключ элемента, вторым -
callback-функция, которая вычисляет значение при промахе кэша.
Метод возвращает вычисленное или закэшированное значение.
Синтаксис
public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null): mixed
Пример
Давайте получим значение из кэша по ключу 'user':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(CacheInterface $cache): Response
{
$res = $cache->get('user', function () {
return 'abcde';
});
return new Response($res);
}
}
?>
Результат выполнения кода:
abcde
Пример
Давайте закэшируем результат вычисления суммы:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class ArticleController extends AbstractController
{
#[Route('/sum', name: 'article_sum')]
public function sum(CacheInterface $cache): Response
{
$res = $cache->get('sum', function () {
return 1 + 2 + 3 + 4 + 5;
});
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
15
Пример
Давайте получим массив данных из кэша по ключу 'items':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class ArticleController extends AbstractController
{
#[Route('/items', name: 'article_items')]
public function items(CacheInterface $cache): Response
{
$res = $cache->get('items', function () {
return ['article 1', 'article 2', 'article 3'];
});
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
article 1, article 2, article 3