Proyectos de Subversion LeadersLinked - Backend

Rev

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

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