Я пытаюсь использовать кэш redis laravel внутри пакета, который требует кэш PSR-16.Я нашел следующий способ заставить это работать:
class_alias('\Predis\Client', '\Redis'); // rename \Predis\Client to \Redis
$client = Redis::connection('default');
$pool = new \Cache\Adapter\Redis\RedisCachePool($client->client());
$simpleCache = new \Cache\Bridge\SimpleCache\SimpleCacheBridge($pool);
$psr16_cache = new SimpleCacheTokenPersistence($simpleCache);
Как вы можете видеть ... первая строка очень хакерская!Имя класса, которое будет принято RedisCachePool, который будет принимать только объект \ Redis.
Независимо от того, что я пробовал, я не могу заставить Laravel предоставить объект Redis, даже если Predis \ Client идентичен.
Кроме хака, я бы выбрал другой вариант: разветвить пакет php-cache / redis-adapter, но, опять же, он не идеален.
Кто-нибудь может предложить какие-нибудь обходные пути?