DevCraft Документации
СправочникКэш

FileCachePool v1.1.0

Файловый PSR-6 CacheItemPoolInterface с clearNamespace и ключами-namespace.

Описание: Файловый PSR-6 pool. Ключ может содержать / как разделитель namespace (расширение сверх reserved-символов PSR-6). На диске: {baseDir}/{key}.cache с JSON-envelope {e, f, v}.

Namespace: Devcraft\Cache

С версии: 1.1.0

См. также:

Конструктор

__construct(string $baseDir, ?int $defaultTtlSeconds = null)

ПараметрТипОписание
$baseDirstringКорневой каталог кэша
$defaultTtlSecondsint|nullTTL по умолчанию; null или 0 — без истечения. По умолчанию: null

Методы PSR-6

getItem(string $key): CacheItemInterface

Описание: Возвращает item (hit или miss). Просроченные и битые файлы удаляются.

getItems(array $keys = []): iterable

Параметры: $keysarray<string>

Возвращает: iterable<string, CacheItemInterface>

hasItem(string $key): bool

Возвращает: booltrue, если ключ есть и не истёк.

clear(): bool

Описание: Очищает deferred-очередь и всё содержимое $baseDir.

deleteItem(string $key): bool / deleteItems(array $keys): bool

Описание: Удаляет файл(ы) и пустые родительские каталоги под $baseDir.

save(CacheItemInterface $item): bool

Описание: Сохраняет только экземпляры CacheItem. Если item ещё на default expiry — применяется $defaultTtlSeconds. Уже истёкший item удаляется.

saveDeferred(CacheItemInterface $item): bool / commit(): bool

Описание: Отложенная запись и сброс очереди на диск.

Расширение DevTools

clearNamespace(string $prefix): bool

Описание: Удаляет все ключи с префиксом {prefix}/ (и сам каталог). Пустой $prefix эквивалентен clear(). Не входит в PSR-6.

Пример:

$pool->clearNamespace('Translation');

getBaseDir(): string

Возвращает: string — нормализованный корневой путь.

Примеры использования

Базовый пример

use Devcraft\Cache\FileCachePool;

$pool = new FileCachePool('/path/to/cache', defaultTtlSeconds: 3600);

$item = $pool->getItem('Translation/dict');
$item->set(['hello' => 'world']);
$pool->save($item);

$hit = $pool->getItem('Translation/dict');
if ($hit->isHit()) {
    $value = $hit->get();
}

$pool->clearNamespace('Translation'); // DevTools extension (not in PSR-6)

На этой странице