Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit df552af

Browse filesBrowse files
[Cache] Fix order of writes in ChainAdapter
1 parent c3a50b0 commit df552af
Copy full SHA for df552af

File tree

1 file changed

+20
-12
lines changed
Filter options

1 file changed

+20
-12
lines changed

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Cache/Adapter/ChainAdapter.php
+20-12Lines 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)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.