Completed
Pull Request — master (#16)
by Alexander
01:24
created

ApcCache::setValues()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 2
crap 1
1
<?php
2
namespace Yiisoft\Cache;
3
4
/**
5
 * ApcCache provides APCu caching in terms of an application component.
6
 *
7
 * To use this application component, the [APCu PHP extension](http://www.php.net/apcu) must be loaded.
8
 * In order to enable APCu for CLI you should add "apc.enable_cli = 1" to your php.ini.
9
 *
10
 * Application configuration example:
11
 *
12
 * ```php
13
 * return [
14
 *     'components' => [
15
 *         'cache' => [
16
 *             '__class' => Yiisoft\Cache\Cache::class,
17
 *             'handler' => [
18
 *                 '__class' => Yiisoft\Cache\ApcCache::class,
19
 *             ],
20
 *         ],
21
 *         // ...
22
 *     ],
23
 *     // ...
24
 * ];
25
 * ```
26
 *
27
 * See [[\Psr\SimpleCache\CacheInterface]] for common cache operations that ApcCache supports.
28
 *
29
 * For more details and usage information on Cache, see the [guide article on caching](guide:caching-overview).
30
 */
31
final class ApcCache extends SimpleCache
32
{
33 2
    public function hasValue(string $key): bool
34
    {
35 2
        return (bool)\apcu_exists($key);
36
    }
37
38 12
    protected function getValue(string $key, $default = null)
39
    {
40 12
        $value = \apcu_fetch($key, $success);
41 12
        return $success ? $value : $default;
42
    }
43
44 3
    protected function getValues(array $keys, $default = null): array
45
    {
46
        // TODO: test that all keys are returned
47 3
        return \apcu_fetch($keys, $succses) ?: [];
48
    }
49
50 11
    protected function setValue(string $key, $value, int $ttl): bool
51
    {
52 11
        return (bool)\apcu_store($key, $value, $ttl);
53
    }
54
55 4
    protected function setValues(array $values, int $ttl): bool
56
    {
57 4
        return \apcu_store($values, null, $ttl) === [];
58
    }
59
60 1
    protected function deleteValue(string $key): bool
61
    {
62 1
        return (bool)\apcu_delete($key);
63
    }
64
65 11
    public function clear(): bool
66
    {
67 11
        return \apcu_clear_cache();
68
    }
69
}
70