webclient/cache-contract

Interface for caching

v1.0.0 2022-07-26 11:50 UTC

This package is not auto-updated.

Last update: 2024-03-20 17:26:56 UTC


README

Latest Stable Version Total Downloads License PHP

webclient/cache-contract

Cache interface for webclient/ext-cache

Install

composer require webclient/cache-contract:^1.0

Tips and tricks

Split cache storage for settings and responses

You may split cache storage for settings and responses.

implements cache-contract, like it:

<?php

use Webclient\Cache\Contract\CacheInterface;

class SplitCache implements CacheInterface
{
    private CacheInterface $settingsCache;
    private CacheInterface $responsesCache;
    public function __construct(CacheInterface $settingsCache, CacheInterface $responsesCache)
    {
        $this->settingsCache = $settingsCache;
        $this->responsesCache = $responsesCache;
    }

    public function get(string $key) : ?string
    {
        $this->getStorage($key)->get($key);
    }

    public function set(string $key,string $data,?int $ttl = null) : void
    {
        $this->getStorage($key)->get($key, $data, $ttl);
    }

    private function getStorage(string $key): CacheInterface
    {
        if (strpos($key, 'http.settings.') === 0) {
            return $this->settingsCache;
        }
        if (strpos($key, 'http.response.') === 0) {
            return $this->responsesCache;
        }
        throw new InvalidArgumentException('can not define storage');
    }
}