for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Mathielen\DataImport\Reader;
use Ddeboer\DataImport\Reader\CountableReaderInterface;
/**
* Reads data from a given service.
*/
class ServiceReader implements CountableReaderInterface
{
* @var \Iterator
protected $iterableResult;
* @var callable
private $callable;
* @var array
private $arguments;
public function __construct(callable $callable, array $arguments = array())
if (!is_callable($callable)) {
throw new \InvalidArgumentException('Given callable is not a callable');
}
$this->callable = $callable;
$this->arguments = $arguments;
* {@inheritdoc}
public function getFields()
return array_keys($this->current()); //TODO
public function current()
if (!$this->iterableResult) {
$this->rewind();
return $this->iterableResult->current();
public function next()
$this->iterableResult->next();
public function key()
return $this->iterableResult->key();
public function valid()
return $this->iterableResult->valid();
public function rewind()
$this->iterableResult = new \ArrayIterator($this->getDataFromService());
$this->iterableResult->rewind();
public function count()
return count($this->iterableResult);
private function getDataFromService()
return call_user_func_array($this->callable, $this->arguments);