oops / cache-factory
3.0.0
2016-08-27 07:37 UTC
Requires
- php: >= 5.6.0
- nette/caching: ~2.2
- nette/di: ~2.2
Requires (Dev)
- jakub-onderka/php-parallel-lint: ~0.8
- mockery/mockery: ~0.9
- nette/bootstrap: ~2.2
- nette/tester: ~1.0
This package is auto-updated.
Last update: 2022-02-01 12:48:48 UTC
README
⚠️ 本软件包不再维护。 可以使用 contributte/cache 代替。
缓存是网络开发中一个非常常见的任务。在 Nette 中创建 Cache
实例的当前做法是将 IStorage
作为依赖项进行枚举,并手动创建 Cache
,如文档中所示。然而,这会让依赖于缓存的类的单元测试变得非常痛苦。你可能需要模拟存储并通过 Cache
代码来找到在存储上调用哪些方法,或者使用某种自动加载魔法。我认为这两种方法都不是一个好的选择。我在每个项目中都会写一个像这个包中那样的简单工厂,所以我把它做成了一个扩展。
安装和需求
$ composer require oops/cache-factory
Oops/CacheFactory 需要 PHP >= 5.6。
使用方法
在您的配置中注册扩展
extensions: cacheFactory: Oops\CacheFactory\DI\CacheFactoryExtension
并将所有直接 Cache
实例化的出现替换为对工厂的调用,这样这个
class CachedFoo { private $cache; public function __construct(Nette\Caching\IStorage $cacheStorage) { $this->cache = new Nette\Caching\Cache($cacheStorage, 'namespace'); } }
就变成了这个
class CachedFoo { private $cache; public function __construct(Oops\CacheFactory\Caching\CacheFactory $cacheFactory) { $this->cache = $cacheFactory->create('namespace'); } }
工厂会自动使用配置中注册的存储。为了提供向后兼容性,如果您需要,也可以向工厂传递任意存储
$cacheFactory->create('namespace', new Nette\Caching\Storages\DevNullStorage());