密码 / 缓存代理
用于任何类公共方法的装饰器,以代理请求到缓存
v1.1
2016-09-20 12:32 UTC
Requires
- php: >=5.5
Requires (Dev)
- phpunit/phpunit: ^4.8.0
This package is auto-updated.
Last update: 2024-09-13 22:59:05 UTC
README
关于库
将任何函数的调用代理到缓存以检索数据。
安装
运行命令
composer require mima/cache-proxy
在composer.json中添加依赖项
{ "require": { "mima/cache-proxy": "~1.0" } }
使用
更新缓存并检索数据
创建CacheProxy\Proxy
类的新实例
use CacheProxy\Proxy; use CacheProxy\Adapter\DoctrinCacheAdapter; $adapter = new DoctrinCacheAdapter($doctrinCacheInstance); $cacheProxy = new Proxy($adapter);
适配器应该实现接口CacheProxy\Adapter\CacheAdapterInterface
。它用于将接口适配到您框架的缓存。
您可以使用几个预准备的适配器或创建自己的适配器
CacheProxy\Adapter\DoctrinCacheAdapter
实现用于doctrine缓存CacheProxy\Adapter\YiiCacheAdapter
实现用于yii2
直接在代码中使用CacheProxy\Proxy
类的实例
use MyNamespace\AnyClass; use CacheProxy\Target\ProxyTarger; $object = new AnyClass(); $target = new ProxyTarget([$object, 'anyMethod'], ['arg1', 'arg2']); $data = $cacheProxy->proxyTarget($target);
或者您可以为您的类创建一个装饰器,并使其依赖于CacheProxy\Proxy
类
namespace MyNamespace; use CacheProxy\Proxy class AnyDecorator { /** * @var AnyClass */ protected $class; /** * @var Proxy */ protected $proxy; public function __construct(AnyClass $class, Proxy $cacheProxy) { $this->class = $class; $this->cacheProxy = $proxy; } public function anyMethod($arg1, $arg2) { $target = new ProxyTarget([$this->class, 'anyMethod'], func_get_args()); return $this->cacheProxy->proxyTarget($target); } }
在CacheProxy\Proxy
类中生成运行时数据的缓存键。如果您想为缓存键指定任何后缀,请将第二个参数传递给CacheProxy\Proxy::proxyTarget
方法。
$cityId = 1; $cacheProxy->proxyTarget($target, $cityId);
要设置缓存中存储数据的时间,请将第三个参数传递给CacheProxy\Proxy::proxyTarget
方法。
$ttl = 3600; $cacheProxy->proxyTarget($target, null, $ttl);
从缓存中清除数据
如果您想删除所有缓存数据,请按照以下步骤操作
// this code update cache ad return data $key = md5('any-key'); $cacheProxy->proxyTarget($target, null, $ttl); // this code flush all data from cache by target and key $cacheProxy->flushTarget($target, $key);