8000 Merge branch '3.1' into 3.2 · symfony/symfony@c74220f · GitHub
[go: up one dir, main page]

Skip to content

Commit c74220f

Browse files
Merge branch '3.1' into 3.2
* 3.1: [Cache] Fix order of writes in ChainAdapter
2 parents f50e914 + e2b11b4 commit c74220f

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/Symfony/Component/Cache/Adapter/ChainAdapter.php

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
class ChainAdapter implements AdapterInterface
2828
{
2929
private $adapters = array();
30+
private $adapterCount;
3031
private $saveUp;
3132

3233
/**
@@ -50,6 +51,7 @@ public function __construct(array $adapters, $maxLifetime = 0)
5051
$this->adapters[] = new ProxyAdapter($adapter);
5152
}
5253
}
54+
$this->adapterCount = count($this->adapters);
5355

5456
$this->saveUp = \Closure::bind(
5557
function ($adapter, $item) use ($maxLifetime) {
@@ -146,9 +148,10 @@ public function hasItem($key)
146148
public function clear()
147149
{
148150
$cleared = true;
151+
$i = $this->adapterCount;
149152

150-
foreach ($this->adapters as $adapter) {
151-
$cleared = $adapter->clear() && $cleared;
153+
while ($i--) {
154+
$cleared = $this->adapters[$i]->clear() && $cleared;
152155
}
153156

154157
return $cleared;
@@ -160,9 +163,10 @@ public function clear()
160163
public function deleteItem($key)
161164
{
162165
$deleted = true;
166+
$i = $this->adapterCount;
163167

164-
foreach ($this->adapters as $adapter) {
165-
$deleted = $adapter->deleteItem($key) && $deleted;
168+
while ($i--) {
169+
$deleted = $this->adapters[$i]->deleteItem($key) && $deleted;
166170
}
167171

168172
return $deleted;
@@ -174,9 +178,10 @@ public function deleteItem($key)
174178
public function deleteItems(array $keys)
175179
{
176180
$deleted = true;
181+
$i = $this->adapterCount;
177182

178-
foreach ($this->adapters as $adapter) {
179-
$deleted = $adapter->deleteItems($keys) && $deleted;
183+
while ($i--) {
184+
$deleted = $this->adapters[$i]->deleteItems($keys) && $deleted;
180185
}
181186

182187
return $deleted;
@@ -188,9 +193,10 @@ public function deleteItems(array $keys)
188193
public function save(CacheItemInterface $item)
189194
{
190195
$saved = true;
196+
$i = $this->adapterCount;
191197

192-
foreach ($this->adapters as $adapter) {
193-
$saved = $adapter->save($item) && $saved;
198+
while ($i--) {
199+
$saved = $this->adapters[$i]->save($item) && $saved;
194200
}
195201

196202
return $saved;
@@ -202,9 +208,10 @@ public function save(CacheItemInterface $item)
202208
public function saveDeferred(CacheItemInterface $item)
203209
{
204210
$saved = true;
211+
$i = $this->adapterCount;
205212

206-
foreach ($this->adapters as $adapter) {
207-
$saved = $adapter->saveDeferred($item) && $saved;
213+
while ($i--) {
214+
$saved = $this->adapters[$i]->saveDeferred($item) && $saved;
208215
}
209216

210217
return $saved;
@@ -216,9 +223,10 @@ public function saveDeferred(CacheItemInterface $item)
216223
public function commit()
217224
{
218225
$committed = true;
226+
$i = $this->adapterCount;
219227

220-
foreach ($this->adapters as $adapter) {
221-
$committed = $adapter->commit() && $committed;
228+
while ($i--) {
229+
$committed = $this->adapters[$i]->commit() && $committed;
222230
}
223231

224232
return $committed;

0 commit comments

Comments
 (0)
0