Blame view

sources/apps/files_external/3rdparty/aws-sdk-php/Guzzle/Service/CachingConfigLoader.php 1.14 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  <?php
  
  namespace Guzzle\Service;
  
  use Guzzle\Cache\CacheAdapterInterface;
  
  /**
   * Decorator that adds caching to a service description loader
   */
  class CachingConfigLoader implements ConfigLoaderInterface
  {
      /** @var ConfigLoaderInterface */
      protected $loader;
  
      /** @var CacheAdapterInterface */
      protected $cache;
  
      /**
       * @param ConfigLoaderInterface $loader Loader used to load the config when there is a cache miss
       * @param CacheAdapterInterface $cache  Object used to cache the loaded result
       */
      public function __construct(ConfigLoaderInterface $loader, CacheAdapterInterface $cache)
      {
          $this->loader = $loader;
          $this->cache = $cache;
      }
  
      public function load($config, array $options = array())
      {
          if (!is_string($config)) {
              $key = false;
          } else {
              $key = 'loader_' . crc32($config);
              if ($result = $this->cache->fetch($key)) {
                  return $result;
              }
          }
  
          $result = $this->loader->load($config, $options);
          if ($key) {
              $this->cache->save($key, $result);
          }
  
          return $result;
      }
  }