gregurco / guzzle-bundle-cache-plugin
为Guzzle Bundle提供的缓存插件,Guzzle Bundle是一个PHP HTTP客户端库和框架,用于构建RESTful网络服务客户端
v3.1.0
2024-03-12 21:36 UTC
Requires
- php: >=7.2
- eightpoints/guzzle-bundle: ~8.0
- guzzlehttp/guzzle: ^6.5.8|^7.4.5
- kevinrob/guzzle-cache-middleware: ~4.0|~5.0
- symfony/config: ~5.0|~6.0|~7.0
- symfony/dependency-injection: ~5.0|~6.0|~7.0
- symfony/expression-language: ~5.0|~6.0|~7.0
- symfony/http-kernel: ~5.0|~6.0|~7.0
Requires (Dev)
- php-coveralls/php-coveralls: ~2.2
- symfony/phpunit-bridge: ~5.0|~6.0|~7.0
README
此插件将缓存功能集成到Guzzle Bundle中,Guzzle Bundle是一个用于构建RESTful网络服务客户端的组件。
要求
- PHP 7.2或更高版本
- Guzzle Bundle
- Guzzle缓存中间件
安装
使用composer
composer.json
{ "require": { "gregurco/guzzle-bundle-cache-plugin": "dev-master" } }
命令行
$ composer require gregurco/guzzle-bundle-cache-plugin
使用方法
启用Bundle
Symfony 2.x和3.x
插件将通过Bundle构造函数在app/AppKernel.php
中激活/连接,如下所示
new EightPoints\Bundle\GuzzleBundle\EightPointsGuzzleBundle([ new Gregurco\Bundle\GuzzleBundleCachePlugin\GuzzleBundleCachePlugin(), ])
Symfony 4
Symfony 4中改变了Bundle的注册方式,现在您需要修改src/Kernel.php
以实现相同的功能。
找到以下行
foreach ($contents as $class => $envs) { if (isset($envs['all']) || isset($envs[$this->environment])) { yield new $class(); } }
并将其替换为
foreach ($contents as $class => $envs) { if (isset($envs['all']) || isset($envs[$this->environment])) { if ($class === \EightPoints\Bundle\GuzzleBundle\EightPointsGuzzleBundle::class) { yield new $class([ new \Gregurco\Bundle\GuzzleBundleCachePlugin\GuzzleBundleCachePlugin(), ]); } else { yield new $class(); } } }
基本配置
# app/config/config.yml eight_points_guzzle: clients: api_payment: base_url: "http://api.domain.tld" # define headers, options # plugin settings plugin: cache: enabled: true
具有特定缓存策略的配置
# app/config/services.yml services: acme.filesystem_cache: class: Doctrine\Common\Cache\FilesystemCache arguments: ['/tmp/'] public: false acme.doctrine_cache_storage: class: Kevinrob\GuzzleCache\Storage\DoctrineCacheStorage arguments: ['@acme.filesystem_cache'] public: false acme.private_cache_strategy: class: Kevinrob\GuzzleCache\Strategy\PrivateCacheStrategy arguments: ['@acme.doctrine_cache_storage'] public: false
# app/config/config.yml eight_points_guzzle: clients: api_payment: plugin: cache: enabled: true strategy: "acme.private_cache_strategy"
有关缓存策略的更多信息,请参阅此处: Kevinrob/guzzle-cache-middleware
失效缓存
# get client $apiPaymentClient = $this->get('eight_points_guzzle.client.api_payment'); # do a request $apiPaymentClient->request('GET', 'ping'); # invalidate cache $event = new InvalidateRequestEvent($apiPaymentClient, 'GET', 'ping'); $this->get('event_dispatcher')->dispatch(GuzzleBundleCacheEvents::INVALIDATE, $event);
许可证
此中间件受MIT许可证的许可 - 详细信息请参阅LICENSE文件