27
27
class ChainAdapter implements AdapterInterface
28
28
{
29
29
private $ adapters = array ();
30
+ private $ adapterCount ;
30
31
private $ saveUp ;
31
32
32
33
/**
@@ -50,6 +51,7 @@ public function __construct(array $adapters, $maxLifetime = 0)
50
51
$ this ->adapters [] = new ProxyAdapter ($ adapter );
51
52
}
52
53
}
54
+ $ this ->adapterCount = count ($ this ->adapters );
53
55
54
56
$ this ->saveUp = \Closure::bind (
55
57
function ($ adapter , $ item ) use ($ maxLifetime ) {
@@ -146,9 +148,10 @@ public function hasItem($key)
146
148
public function clear ()
147
149
{
148
150
$ cleared = true ;
151
+ $ i = $ this ->adapterCount ;
149
152
150
- foreach ($ this -> adapters as $ adapter ) {
151
- $ cleared = $ adapter ->clear () && $ cleared ;
153
+ while ($ i -- ) {
154
+ $ cleared = $ this -> adapters [ $ i ] ->clear () && $ cleared ;
152
155
}
153
156
154
157
return $ cleared ;
@@ -160,9 +163,10 @@ public function clear()
160
163
public function deleteItem ($ key )
161
164
{
162
165
$ deleted = true ;
166
+ $ i = $ this ->adapterCount ;
163
167
164
- foreach ($ this -> adapters as $ adapter ) {
165
- $ deleted = $ adapter ->deleteItem ($ key ) && $ deleted ;
168
+ while ($ i -- ) {
169
+ $ deleted = $ this -> adapters [ $ i ] ->deleteItem ($ key ) && $ deleted ;
166
170
}
167
171
168
172
return $ deleted ;
@@ -174,9 +178,10 @@ public function deleteItem($key)
174
178
public function deleteItems (array $ keys )
175
179
{
176
180
$ deleted = true ;
181
+ $ i = $ this ->adapterCount ;
177
182
178
- foreach ($ this -> adapters as $ adapter ) {
179
- $ deleted = $ adapter ->deleteItems ($ keys ) && $ deleted ;
183
+ while ($ i -- ) {
184
+ $ deleted = $ this -> adapters [ $ i ] ->deleteItems ($ keys ) && $ deleted ;
180
185
}
181
186
182
187
return $ deleted ;
@@ -188,9 +193,10 @@ public function deleteItems(array $keys)
188
193
public function save (CacheItemInterface $ item )
189
194
{
190
195
$ saved = true ;
196
+ $ i = $ this ->adapterCount ;
191
197
192
- foreach ($ this -> adapters as $ adapter ) {
193
- $ saved = $ adapter ->save ($ item ) && $ saved ;
198
+ while ($ i -- ) {
199
+ $ saved = $ this -> adapters [ $ i ] ->save ($ item ) && $ saved ;
194
200
}
195
201
196
202
return $ saved ;
@@ -202,9 +208,10 @@ public function save(CacheItemInterface $item)
202
208
public function saveDeferred (CacheItemInterface $ item )
203
209
{
204
210
$ saved = true ;
211
+ $ i = $ this ->adapterCount ;
205
212
206
- foreach ($ this -> adapters as $ adapter ) {
207
- $ saved = $ adapter ->saveDeferred ($ item ) && $ saved ;
213
+ while ($ i -- ) {
214
+ $ saved = $ this -> adapters [ $ i ] ->saveDeferred ($ item ) && $ saved ;
208
215
}
209
216
210
217
return $ saved ;
@@ -216,9 +223,10 @@ public function saveDeferred(CacheItemInterface $item)
216
223
public function commit ()
217
224
{
218
225
$ committed = true ;
226
+ $ i = $ this ->adapterCount ;
219
227
220
- foreach ($ this -> adapters as $ adapter ) {
221
- $ committed = $ adapter ->commit () && $ committed ;
228
+ while ($ i -- ) {
229
+ $ committed = $ this -> adapters [ $ i ] ->commit () && $ committed ;
222
230
}
223
231
224
232
return $ committed ;
0 commit comments