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)
| Параметр | Тип | Описание |
|---|---|---|
$baseDir | string | Корневой каталог кэша |
$defaultTtlSeconds | int|null | TTL по умолчанию; null или 0 — без истечения. По умолчанию: null |
Методы PSR-6
getItem(string $key): CacheItemInterface
Описание: Возвращает item (hit или miss). Просроченные и битые файлы удаляются.
getItems(array $keys = []): iterable
Параметры: $keys — array<string>
Возвращает: iterable<string, CacheItemInterface>
hasItem(string $key): bool
Возвращает: bool — true, если ключ есть и не истёк.
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)