12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- ================
- 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');
|