tourze / cache-strategy
Cache strategy interface
0.0.1
2025-04-20 13:35 UTC
Requires
- php: ^8.1
- symfony/dependency-injection: ^6.4
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-04-20 13:38:11 UTC
README
这个包提供了一个用于定义缓存策略的接口,可以帮助确定哪些数据库查询应该被缓存。
安装
composer require tourze/cache-strategy
使用方法
这个包定义了 CacheStrategy
接口,你可以实现这个接口来创建自定义的缓存策略。
CacheStrategy 接口
interface CacheStrategy { public function shouldCache(string $query, array $params): bool; }
接口中的 shouldCache
方法接收查询字符串和参数数组,返回一个布尔值表示该查询是否应该被缓存。
预定义策略
该包包含了一个预定义的缓存策略:
NoCacheStrategy
: 一个始终返回true
的策略,表示所有查询都应该被缓存。
自定义策略
你可以通过实现 CacheStrategy
接口来创建自己的缓存策略:
use Tourze\CacheStrategy\CacheStrategy; class MyCustomStrategy implements CacheStrategy { public function shouldCache(string $query, array $params): bool { // 实现你的逻辑,决定是否缓存查询 // 例如:只缓存 SELECT 查询 return str_starts_with(strtoupper(trim($query)), 'SELECT'); } }
与 Symfony DependencyInjection 集成
CacheStrategy
接口使用了 Symfony 的 AutoconfigureTag
属性,这使得它可以自动配置为服务。接口定义了常量 SERVICE_TAG
作为服务标签的名称:
const SERVICE_TAG = 'doctrine.cache.entity_cache_strategy';
这使得 Symfony 的依赖注入容器可以自动标记实现了 CacheStrategy
接口的服务。
测试
包内含一组单元测试。你可以通过以下命令运行测试:
./vendor/bin/phpunit packages/cache-strategy/tests