gregurco/guzzle-bundle-cache-plugin

为Guzzle Bundle提供的缓存插件,Guzzle Bundle是一个PHP HTTP客户端库和框架,用于构建RESTful网络服务客户端

v3.1.0 2024-03-12 21:36 UTC

This package is auto-updated.

Last update: 2024-08-30 20:33:16 UTC


README

Build Status Coverage Status SensioLabsInsight

此插件将缓存功能集成到Guzzle Bundle中,Guzzle Bundle是一个用于构建RESTful网络服务客户端的组件。

要求

安装

使用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文件