================
|
Guzzle iterators
|
================
|
|
Guzzle provides several SPL iterators that can be used with other SPL iterators, including Guzzle resource iterators.
|
Guzzle's ``guzzle/iterator`` component can also be used independently of the rest of Guzzle through Packagist and
|
Composer: https://packagist.org/packages/guzzle/iterator
|
|
ChunkedIterator
|
---------------
|
|
Pulls out multiple values from an inner iterator and yields and array of values for each outer iteration -- essentially
|
pulling out chunks of values from the inner iterator.
|
|
.. code-block:: php
|
|
use Guzzle\Iterator\ChunkedIterator;
|
|
$inner = new ArrayIterator(range(0, 8));
|
$chunkedIterator = new ChunkedIterator($inner, 2);
|
|
foreach ($chunkedIterator as $chunk) {
|
echo implode(', ', $chunk) . "\n";
|
}
|
|
// >>> 0, 1
|
// >>> 2, 3
|
// >>> 4, 5
|
// >>> 6, 7
|
// >>> 8
|
|
FilterIterator
|
--------------
|
|
This iterator is used to filter values out of the inner iterator. This iterator can be used when PHP 5.4's
|
CallbackFilterIterator is not available.
|
|
.. code-block:: php
|
|
use Guzzle\Iterator\FilterIterator;
|
|
$inner = new ArrayIterator(range(1, 10));
|
$filterIterator = new FilterIterator($inner, function ($value) {
|
return $value % 2;
|
});
|
|
foreach ($filterIterator as $value) {
|
echo $value . "\n";
|
}
|
|
// >>> 2
|
// >>> 4
|
// >>> 6
|
// >>> 8
|
// >>> 10
|
|
MapIterator
|
-----------
|
|
This iterator modifies the values of the inner iterator before yielding.
|
|
.. code-block:: php
|
|
use Guzzle\Iterator\MapIterator;
|
|
$inner = new ArrayIterator(range(0, 3));
|
|
$mapIterator = new MapIterator($inner, function ($value) {
|
return $value * 10;
|
});
|
|
foreach ($mapIterator as $value) {
|
echo $value . "\n";
|
}
|
|
// >>> 0
|
// >>> 10
|
// >>> 20
|
// >>> 30
|
|
MethodProxyIterator
|
-------------------
|
|
This decorator is useful when you need to expose a specific method from an inner iterator that might be wrapper
|
by one or more iterator decorators. This decorator proxies missing method calls to each inner iterator until one
|
of the inner iterators can fulfill the call.
|
|
.. code-block:: php
|
|
use Guzzle\Iterator\MethodProxyIterator;
|
|
$inner = new \ArrayIterator();
|
$proxy = new MethodProxyIterator($inner);
|
|
// Proxy method calls to the ArrayIterator
|
$proxy->append('a');
|
$proxy->append('b');
|