/** * @test */ public function setMaxLimitWithoutDefaultDoesNotChangeDefault() { $page = new Page(); $maxLimit = 14; $default = $page->getDefaultLimit(); $this->assertNotEquals($page->getMaxLimit(), $maxLimit); $page->setLimitBounds($maxLimit); $this->assertEquals($page->getMaxLimit(), $maxLimit); $this->assertEquals($page->getDefaultLimit(), $default); }
/** * Applies search query via $params and invokes * $callable on each result. $chunkSize specifies * how many entities will be read into memory at once. * * @param Params $params * @param $callable * @param int $chunkSize * @return $this * @throws \FzyUtils\Exception\Configuration\Invalid */ public function traverseResults(Params $params, $callable, $chunkSize = 100) { $total = $this->getCount($params); $page = new Page(0, $chunkSize); $page->setLimitBounds($chunkSize, $chunkSize); while ($page->getOffset() < $total) { $set = $this->getResults($page, $params); $i = 0; foreach ($set as $item) { call_user_func($callable, $item, $page->getOffset() + $i++); } $page->setOffset($page->getOffset() + $page->getLimit()); } return $this; }