1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
<?php
namespace OpenCloud\LoadBalancer\Collection;
use OpenCloud\Common\Collection\PaginatedIterator;
class LoadBalancerIterator extends PaginatedIterator
{
private $nextElement;
public function constructNextUrl()
{
$url = parent::constructNextUrl();
$query = $url->getQuery();
$query['limit'] = $query['limit'] + 1;
$url->setQuery($query);
return $url;
}
public function updateMarkerToCurrent()
{
$this->setMarkerFromElement($this->nextElement);
}
public function parseResponseBody($body)
{
$response = parent::parseResponseBody($body);
if (count($response) >= $this->getOption('limit.page')) {
$this->nextElement = array_pop($response);
}
return $response;
}
}