27cm
@27cm
TODO: Написать статус

Как заставить Zend\Cache\Storage\Adapter\Filesystem работать со множественными ключами?

Нужно реализовать примерно следующее поведение:
$cache->setItem(array('key1', 'key2', 'key3'), 'value');
$cache->getItem('key1');
$cache->getItem('key2');
$cache->getItem('key3');


Т. е. к одному и тому же файлу кеша можно обращаться по разным ключам.

Есть ли способы реализовать нечто подобное, используя обычный Zend\Cache\Storage\Adapter\Filesystem или единственный выход - писать свой адаптер/плагин?
  • Вопрос задан
  • 2372 просмотра
Решения вопроса 1
webtop
@webtop
Web developer
Храните список ключей отдельно и по главному ключу кешируйте.
$allKeys = array(
            'Page' => array('page1', 'page2', ...),
);
function getKey($searchKey){
    foreach($allKeys as $mainKey => $keys){
        if (array_key_exists($searchKey, $keys[$mainKey])){
            return $keys[$maintKey][$searchKey];
        }
        return null;
    }
}
$key = getKey('page1');// or getKey('page2') // return Page
$cache->getItem($key);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mannaro
@mannaro
Умею профессионально гуглить
Я думаю, что это необычная задача. Поэтому напишите функцию:
function setItems($arr, $value) {
  for($key in $arr) {
    $cache->setItem($key, $value);
  }
}

setItem(['key1', 'key2'], 'value');
$cache->getItem('key1') == $cache->getItem('key2'); # true
А, вообще, пересмотрите свою архитектуру.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы