Class PaginatedIterator
Class ResourceIterator is tasked with iterating over resource collections - many of which are paginated. Based on a base URL, the iterator will append elements based on further requests to the API. Each time this happens, query parameters (marker) are updated based on the current value.
- OpenCloud\Common\ArrayAccess implements ArrayAccess
- OpenCloud\Common\Collection\ArrayCollection implements Countable
- OpenCloud\Common\Collection\ResourceIterator implements Iterator
- OpenCloud\Common\Collection\PaginatedIterator implements Iterator
Direct known subclasses
OpenCloud\DNS\Collection\DnsIteratorPackage: OpenCloud\Common\Collection
Since: 1.8.0
Located at OpenCloud/Common/Collection/PaginatedIterator.php
public static
static
|
|
public
mixed
|
|
public
mixed
|
|
public
integer|mixed
|
|
public
|
|
public
|
#
updateMarkerToCurrent( )
Update the current marker based on the current element. The marker will be based on a particular property of this current element, so you must retrieve it first. |
public
|
|
public
boolean
|
|
protected
|
|
public
mixed
|
|
public
mixed
|
#
appendNewCollection( )
Retrieve a new page of elements from the API (based on a new request), parse its response, and append them to the collection. |
public
boolean
|
#
extractNextLink( mixed $body )
Based on the response body, extract the explicitly set "link" value if provided. |
public
Guzzle\Http\Url|string
|
|
public
array
|
#
parseResponseBody( mixed $body )
Based on the response from the API, parse it for the data we need (i.e. an meaningful array of elements). |
public
|
__construct(),
append(),
count(),
setElements(),
valueExists()
|
offsetExists(),
offsetGet(),
offsetSet(),
offsetUnset()
|
string |
MARKER
|
'marker' |
|
string |
LIMIT
|
'limit' |
protected
string
|
$currentMarker |
|
#
Used for requests which append elements. |
protected
Guzzle\Http\Url
|
$nextUrl |
|
#
The next URL for pagination |
protected
array
|
$defaults | array(
// Collection limits
'limit.total' => 10000,
'limit.page' => 100,
// The "links" element key in response
'key.links' => 'links',
// JSON structure
'key.collection' => null,
'key.collectionElement' => null,
// The property used as the marker
'key.marker' => 'name',
// Options for "next page" request
'request.method' => 'GET',
'request.headers' => array(),
'request.body' => null,
'request.curlOptions' => array()
) |
#
Fallback defaults if options are not explicitly set or provided. |
protected
array
|
$required | array('resourceClass', 'baseUrl') |
#
Required options |
$options,
$position,
$resourceParent
|
$elements
|