Completed
Push — master ( 386972...cf64d5 )
by Lars
02:26 queued 46s
created

AdapterApc::__construct()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3.4746

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 5
cts 8
cp 0.625
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 6
nc 2
nop 0
crap 3.4746
1
<?php
2
3
namespace voku\cache;
4
5
/**
6
 * AdapterApc: a APC-Cache adapter
7
 *
8
 * http://php.net/manual/de/book.apc.php
9
 *
10
 * @package voku\cache
11
 */
12
class AdapterApc implements iAdapter
13
{
14
15
  /**
16
   * @var bool
17
   */
18
  public $installed = false;
19
20
  /**
21
   * @var bool
22
   */
23
  public $debug = false;
24
25
  /**
26
   * __construct()
27
   */
28 9
  public function __construct()
29
  {
30
    if (
31 9
        function_exists('apc_store') === true
32 9
        &&
33
        ini_get('apc.enabled')
34 9
    ) {
35
      $this->installed = true;
36
    }
37 9
  }
38
39
  /**
40
   * Check if apc-cache exists.
41
   *
42
   * WARNING: use $this->exists($key) instead
43
   *
44
   * @param string $key
45
   *
46
   * @return bool
47
   *
48
   * @internal
49
   */
50
  public function apc_cache_exists($key)
51
  {
52
    return (bool)apc_fetch($key);
53
  }
54
55
  /**
56
   * Clears the APC cache by type.
57
   *
58
   * @param string $type - If $type is "user", the user cache will be cleared; otherwise,
59
   *                       the system cache (cached files) will be cleared.
60
   *
61
   * @return boolean
62
   *
63
   * @internal
64
   */
65
  public function cacheClear($type)
66
  {
67
    return apc_clear_cache($type);
68
  }
69
70
  /**
71
   * Retrieves cached information from APC's data store
72
   *
73
   * @param string  $type    - If $type is "user", information about the user cache will be returned.
74
   * @param boolean $limited - If $limited is TRUE, the return value will exclude the individual list of cache entries.
75
   *                         This is useful when trying to optimize calls for statistics gathering.
76
   *
77
   * @return array of cached data (and meta-data) or FALSE on failure.
78
   */
79
  public function cacheInfo($type = '', $limited = false)
80
  {
81
    return apc_cache_info($type, $limited);
82
  }
83
84
  /**
85
   * @inheritdoc
86
   */
87
  public function exists($key)
88
  {
89
    if (function_exists('apc_exists')) {
90
      return apc_exists($key);
91
    }
92
93
    return $this->apc_cache_exists($key);
94
  }
95
96
  /**
97
   * @inheritdoc
98
   */
99
  public function get($key)
100
  {
101
    if ($this->exists($key)) {
102
      return apc_fetch($key);
103
    }
104
105
    return false;
106
  }
107
108
  /**
109
   * @inheritdoc
110
   */
111
  public function installed()
112
  {
113
    return $this->installed;
114
  }
115
116
  /**
117
   * @inheritdoc
118
   */
119
  public function remove($key)
120
  {
121
    return apc_delete($key);
122
  }
123
124
  /**
125
   * @inheritdoc
126
   */
127
  public function removeAll()
128
  {
129
    return $this->cacheClear('system') && $this->cacheClear('user');
130
  }
131
132
  /**
133
   * @inheritdoc
134
   */
135
  public function set($key, $value)
136
  {
137
    return apc_store($key, $value);
138
  }
139
140
  /**
141
   * @inheritdoc
142
   */
143
  public function setExpired($key, $data, $ttl)
144
  {
145
    return apc_store($key, $data, $ttl);
146
  }
147
148
}
149