Адаптери для взаємодії між кешами PSR-6 і PSR-16
Дата оновлення перекладу 2023-08-21
Адаптери для взаємодії між кешами PSR-6 і PSR-16
Іноді у вас може бути обʼєкт кешу, що реалізує стандарт PSR-16, але його потрібно передати в обʼєкт, який очікує адаптер кешу PSR-6 . Або у вас може бути ситуація навпаки. Компонент кешу містить два класи для двосторонньої взаємодії між кешами PSR-6 і PSR-16.
Використання обʼєкта кешу PSR-16, як кешу PSR-6
Уявіть, що ви хочете працювати з класом, що вимагає обʼєкт пула кешу PSR-6. Наприклад:
1 2 3 4 5 6 7 8 9 10 11 12 13
use Psr\Cache\CacheItemPoolInterface;
// простовигаданий клас для прикладу
class GitHubApiClient
{
// ...
// вимагає обʼєкт кешу PSR-6
public function __construct(CacheItemPoolInterface $cachePool)
{
// ...
}
}
Але у вас вже є обʼєкт кешу PSR-16, і ви хотіли б передати його класу. Не проблема!
Компонент Кеш надає клас SimpleCacheAdapter
саме для таких випадків використання:
1 2 3 4 5 6 7 8 9 10 11
use Symfony\Component\Cache\Simple\FilesystemCache;
use Symfony\Component\Cache\Adapter\SimpleCacheAdapter;
// обʼєкт кешу PSR-16, який ви хочете використати
$psr16Cache = new FilesystemCache();
// кеш PSR-6, який використовує ваш кеш внутрішньо!
$psr6Cache = new SimpleCacheAdapter($psr16Cache);
// тепер використайте це коли захочете
$githubApiClient = new GitHubApiClient($psr6Cache);
Використання обʼєкта кешу PSR-6, як кешу PSR-16
Уявіть, що ви хочете працювати з класом, що вимагає обʼєкт кешу PSR-16. Наприклад:
1 2 3 4 5 6 7 8 9 10 11 12 13
use Psr\SimpleCache\CacheInterface;
// вигаданий клас для прикладу
class GitHubApiClient
{
// ...
// вимагає обʼєкт кешу PSR-16
public function __construct(CacheInterface $cache)
{
// ...
}
}
Але у вас вже є обʼєкт кешу PSR-6, и ви б хотіли передати його клас. Не проблема! Компонент Кеш надає клас Psr6Cache саме для таких випадків застосування:
1 2 3 4 5 6 7 8 9 10 11
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Cache\Simple\Psr6Cache;
// обʼєкт кешу PSR-6, який ви хочете використати
$psr6Cache = new FilesystemAdapter();
// кеш PSR-16, який використовує ваш кеш внутрішньо!
$psr16Cache = new Psr6Cache($psr6Cache);
// тепер використайте це коли захочете
$githubApiClient = new GitHubApiClient($psr16Cache);