Proyectos de Subversion LeadersLinked - Services

Rev

Rev 192 | Rev 333 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Cache;
6
 
7
 
8
class CacheImpl implements CacheInterface
9
{
10
 
283 www 11
    /**
12
     *
13
     * @var \LeadersLinked\Cache\CacheInterface
14
     */
15
    private static $_instance;
1 efrain 16
 
17
 
18
    /**
283 www 19
     *
20
     * @var \Memcached
21
     */
22
    private $cache;
23
 
24
    /**
25
     *
26
     * @var int
27
     */
28
    private $ttl;
29
 
30
 
31
    /**
1 efrain 32
     *
33
     * @param Array $config
34
     */
283 www 35
    private function __construct($config)
1 efrain 36
    {
283 www 37
 
38
         $this->ttl         = intval($config['leaderslinked.memcache.ttl'], 10);
39
         $host              = strval($config['leaderslinked.memcache.host']);
40
         $port              = intval($config['leaderslinked.memcache.port'], 10);
192 efrain 41
 
283 www 42
 
43
         $this->cache = new \Memcached();
44
         $this->cache->addserver($host, $port);
192 efrain 45
 
46
 
47
 
1 efrain 48
    }
49
 
50
    /**
283 www 51
     *
52
     * @param array $config
53
     * @return \LeadersLinked\Cache\CacheInterface
1 efrain 54
     */
283 www 55
    public static function getInstance($config)
1 efrain 56
    {
283 www 57
        if(self::$_instance == null) {
58
            self::$_instance = new CacheImpl($config);
192 efrain 59
        }
283 www 60
        return self::$_instance;
1 efrain 61
    }
62
 
63
    /**
192 efrain 64
     *
1 efrain 65
     * @param string $key
283 www 66
     * @param mixed $value
1 efrain 67
     */
283 www 68
    public function setItem($key, $value)
1 efrain 69
    {
192 efrain 70
 
283 www 71
        if($this->cache->checkKey($key)) {
72
 
73
            $this->cache->replace($key, serialize($value), $this->ttl);
192 efrain 74
        } else {
283 www 75
            $this->cache->add($key, serialize($value), $this->ttl);
192 efrain 76
        }
283 www 77
 
78
 
1 efrain 79
    }
80
 
283 www 81
 
1 efrain 82
 
83
    /**
84
     *
85
     * @param string $key
86
     * @return boolean
87
     */
88
    public function removeItem($key)
89
    {
283 www 90
        if($this->cache->checkKey($key)) {
91
            return $this->cache->delete($key);
192 efrain 92
        } else {
93
            return true;
94
        }
1 efrain 95
    }
96
 
97
 
98
 
192 efrain 99
 
100
 
1 efrain 101
    /**
102
     *
103
     * @param string $key
104
     * @return boolean
105
     */
106
    public function hasItem($key)
107
    {
283 www 108
        return $this->cache->checkKey($key);
1 efrain 109
 
110
    }
111
 
112
 
113
    /**
114
     *
115
     * @param string $key
116
     * @return mixed
117
     */
118
    public function getItem($key)
119
    {
283 www 120
        if($this->cache->checkKey($key)) {
121
            $value = $this->cache->get($key);
122
            if(is_string($value)) {
123
                return unserialize($value);
124
            } else {
125
                return $value;
126
            }
1 efrain 127
        } else {
192 efrain 128
            return null;
1 efrain 129
        }
192 efrain 130
 
1 efrain 131
    }
132
 
283 www 133
 
134
 
1 efrain 135
}
136
 
137
 
138