Proyectos de Subversion LeadersLinked - Services

Rev

Rev 1 | Rev 283 | 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
use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory;
8
 
9
 
10
class CacheImpl implements CacheInterface
11
{
12
 
13
 
14
 
15
    /**
16
     *
17
     * @param Array $config
18
     */
19
    public function __construct($config)
20
    {
192 efrain 21
        /*
22
         $this->ttl    = intval($config['leaderslinked.memcache.ttl'], 10);
23
         $this->host   = strval($config['leaderslinked.memcache.host']);
24
         $this->port   = intval($config['leaderslinked.memcache.port'], 10);
25
 
26
 
27
         if(class_exists(\Memcached::class)) {
28
         $this->memcached = new \Memcached();
29
         $this->memcached->addServer($this->host, $this->port);
30
         } else  if(class_exists(\Memcache::class)) {
31
         $this->memcached = new \Memcache();
32
         $this->memcached->addserver($this->host, $this->port);
33
         }*/
34
 
35
 
1 efrain 36
    }
37
 
38
    /**
192 efrain 39
     *
1 efrain 40
     * @param string $key
41
     * @param mixed $value
42
     */
43
    public function setItem($key, $value)
44
    {
192 efrain 45
        $filename = $this->getFilename($key);
46
        if(file_exists($filename)) {
47
            @unlink($filename);
48
        }
49
 
50
        return file_put_contents($filename, serialize($value));
51
 
1 efrain 52
    }
53
 
54
    /**
192 efrain 55
     *
1 efrain 56
     * @param string $key
57
     * @return boolean
58
     */
59
    public function touch($key)
60
    {
192 efrain 61
 
62
        $filename = $this->getFilename($key);
63
        if(file_exists($filename)) {
64
            return touch($filename);
65
        } else {
66
            return true;
67
        }
1 efrain 68
    }
69
 
70
 
71
    /**
72
     *
73
     * @param string $key
74
     * @return boolean
75
     */
76
    public function removeItem($key)
77
    {
192 efrain 78
        $filename = $this->getFilename($key);
79
        if(file_exists($filename)) {
80
            return unlink($filename);
81
        } else {
82
            return true;
83
        }
1 efrain 84
    }
85
 
86
 
87
 
192 efrain 88
 
89
 
1 efrain 90
    /**
91
     *
92
     * @param string $key
93
     * @return boolean
94
     */
95
    public function hasItem($key)
96
    {
192 efrain 97
        $filename = $this->getFilename($key);
98
        return file_exists($filename);
1 efrain 99
 
100
    }
101
 
102
 
103
    /**
104
     *
105
     * @param string $key
106
     * @return mixed
107
     */
108
    public function getItem($key)
109
    {
192 efrain 110
        $filename = $this->getFilename($key);
111
        if(file_exists($filename)) {
112
            return unserialize(file_get_contents($filename));
1 efrain 113
        } else {
192 efrain 114
            return null;
1 efrain 115
        }
192 efrain 116
 
1 efrain 117
    }
118
 
192 efrain 119
    /**
120
     *
121
     * @param string $key
122
     * @return string
123
     */
124
    private function getFilename($key)
125
    {
126
        $filepath = 'data' . DIRECTORY_SEPARATOR . 'cache';
127
        if(!file_exists($filepath)) {
128
            @mkdir($filepath, 0755);
129
        }
130
 
131
        return $filepath . DIRECTORY_SEPARATOR . $key . '.json';
132
    }
1 efrain 133
 
192 efrain 134
 
135
 
1 efrain 136
    /**
137
     *
138
     * @return bool
139
     */
140
    public function available()
141
    {
192 efrain 142
        return  true;
1 efrain 143
    }
144
}
145
 
146
 
147