axetools / cachingtrait
一个PHP库,用于在类上启用静态缓存特性
Requires
- php: ^8.0
Requires (Dev)
README
这是一个php类特性,可以为类启用静态缓存。
免责声明
一般来说,这并不促进良好的设计模式。这不是创建新项目时应包含的好包。这个包的强大之处在于可以将它放入难以重构的重型类中。
此包可以显著减少在多个位置实例化且创建困难或实例化时具有多次数据库调用的类的执行时间。包含在请求生命周期内预期不会更改的数据的类。有时在重构时无法将这些类作为依赖项传递,需要中间解决方案。
警告:在编写涉及缓存类的测试时,请记住静态缓存不会在测试之间自动重置。应在每个测试用例的开始和结束时注意确保类缓存干净。
本项目使用 语义版本控制。
安装
首选的安装方法是使用 Composer。运行以下命令安装包并将其添加到项目的 composer.json
文件中。
composer require axetools/cachingtrait
用法
CachingTrait 可以与任何类一起使用,并将公开几个受保护的方法供类使用以访问静态缓存数组。
示例
<?php namespace test use AxeTools\Trait\Caching\CachingTrait; class HardToBuild { use CachingTrait; /** * @param array<string> $parameters Assumes that the parameters alone can uniquely recall the same object. */ public static function create(array $parameters){ if(self::hasCache(parameters)) return self::getCache($parameters); return new self($parameters); } }
setCache()
使用 self::setCache()
静态方法将数据存储在内部缓存数组中。没有保护措施可以阻止数组键被覆盖。如果您需要确保您不会覆盖数据,请在设置键的数据之前使用 self::hasCache()
检查是否已经存储了该键的数据。
描述
self::setCache(array<string> $key, mixed $data): void
参数
- key
- 将用于标识存储在缓存中的数据的字符串数组
- data
- 将存储在缓存中的数据
返回值
此方法没有返回值
hasCache()
使用 self::hasCache()
静态方法来检查缓存数组中是否已经存储了键值。由于可以为给定键存储任何内容,因此只检查缓存数组中给定键的存在,而不考虑存储在键中的数据。
描述
self::hasCache(array<string> $key): bool
参数
- key
- 将用于检查存储在缓存中的数据的字符串数组
返回值
如果找到缓存数组中的键,则返回 true
,如果没有找到,则返回 false
。
getCache()
使用 self::getCache()
静态方法检索分配给指定键的缓存中存储的数据。如果键未在缓存数组中定义,将抛出 CachingTraitMissingKeyException
。
描述
self::getCache(array<string> $key): mixed
参数
- key
- 将用于返回存储在缓存中指定键的数据的字符串数组
返回值
这将返回为提供的键存储在缓存中的值。如果键未在缓存数组中定义,则抛出 CachingTraitMissingKeyException
。
clearCache()
描述
self::clearCache(array<string> $key): void
参数
- key
- 可选的字符串数组,将用于清除缓存中存储的数据和键。如果省略,则整个缓存数组将被清除。
返回值
如果键未在缓存数组中定义,则抛出 CachingTraitMissingKeyException
。