diff options
author | ignace nyamagana butera <nyamsprod@gmail.com> | 2015-11-27 12:02:17 +0100 |
---|---|---|
committer | ignace nyamagana butera <nyamsprod@gmail.com> | 2015-11-27 12:02:17 +0100 |
commit | b2eb2c573e7616a11ca52c35186b6f8b9154f40f (patch) | |
tree | ff0311303f1bb11b6d204e6e822f779aa564a7f3 /src | |
parent | a94b152004b070cccf3a6cb669f247a6bd764bd6 (diff) | |
download | csv-b2eb2c573e7616a11ca52c35186b6f8b9154f40f.zip csv-b2eb2c573e7616a11ca52c35186b6f8b9154f40f.tar.gz csv-b2eb2c573e7616a11ca52c35186b6f8b9154f40f.tar.bz2 |
Remove SplFileObject flags
Diffstat (limited to 'src')
-rw-r--r-- | src/AbstractCsv.php | 22 | ||||
-rw-r--r-- | src/Config/Controls.php | 45 | ||||
-rw-r--r-- | src/Config/Output.php | 32 | ||||
-rw-r--r-- | src/Reader.php | 15 |
4 files changed, 32 insertions, 82 deletions
diff --git a/src/AbstractCsv.php b/src/AbstractCsv.php index 1e93c31..27ba772 100644 --- a/src/AbstractCsv.php +++ b/src/AbstractCsv.php @@ -93,13 +93,6 @@ abstract class AbstractCsv implements JsonSerializable, IteratorAggregate protected $open_mode; /** - * Default SplFileObject flags settings - * - * @var int - */ - protected $defaultFlags; - - /** * Creates a new instance * * The path must be an SplFileInfo object @@ -111,8 +104,6 @@ abstract class AbstractCsv implements JsonSerializable, IteratorAggregate */ protected function __construct($path, $open_mode = 'r+') { - $this->defaultFlags = SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY; - $this->flags = $this->defaultFlags; $this->open_mode = strtolower($open_mode); $this->path = $path; $this->initStreamFilter($this->path); @@ -127,7 +118,7 @@ abstract class AbstractCsv implements JsonSerializable, IteratorAggregate } /** - * Returns the CSV Iterator + * Returns the inner SplFileObject * * @return SplFileObject */ @@ -139,20 +130,22 @@ abstract class AbstractCsv implements JsonSerializable, IteratorAggregate $iterator = new SplFileObject($this->getStreamFilterPath(), $this->open_mode); } $iterator->setCsvControl($this->delimiter, $this->enclosure, $this->escape); - $iterator->setFlags($this->flags); + $iterator->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY); return $iterator; } /** - * Returns the CSV Iterator for conversion + * Returns the CSV Iterator * * @return Iterator */ - protected function getConversionIterator() + protected function getCsvIterator() { + $this->addFilter(function ($row) { + return is_array($row) && $row != [null]; + }); $iterator = $this->getIterator(); - $iterator->setFlags($this->defaultFlags); $iterator = $this->applyBomStripping($iterator); $iterator = $this->applyIteratorFilter($iterator); $iterator = $this->applyIteratorSortBy($iterator); @@ -274,7 +267,6 @@ abstract class AbstractCsv implements JsonSerializable, IteratorAggregate $csv->enclosure = $this->enclosure; $csv->escape = $this->escape; $csv->encodingFrom = $this->encodingFrom; - $csv->flags = $this->flags; $csv->input_bom = $this->input_bom; $csv->output_bom = $this->output_bom; $csv->newline = $this->newline; diff --git a/src/Config/Controls.php b/src/Config/Controls.php index b54d74f..195af6f 100644 --- a/src/Config/Controls.php +++ b/src/Config/Controls.php @@ -48,13 +48,6 @@ trait Controls protected $escape = '\\'; /** - * the SplFileObject flags holder - * - * @var int - */ - protected $flags; - - /** * newline character * * @var string @@ -133,6 +126,11 @@ trait Controls } /** + * @inheritdoc + */ + abstract protected function filterInteger($int, $minValue, $errorMessage); + + /** * Returns the CSV Iterator * * @return SplFileObject @@ -198,39 +196,6 @@ trait Controls } /** - * Sets the Flags associated to the CSV SplFileObject - * - * @param int $flags - * - * @throws InvalidArgumentException If the argument is not a valid integer - * - * @return $this - */ - public function setFlags($flags) - { - $flags = $this->filterInteger($flags, 0, 'you should use a `SplFileObject` Constant'); - $this->flags = $flags | SplFileObject::READ_CSV; - - return $this; - } - - /** - * @inheritdoc - */ - abstract protected function filterInteger($int, $minValue, $errorMessage); - - /** - * Returns the file Flags - * - * @return int - */ - public function getFlags() - { - return $this->flags; - } - - - /** * Sets the newline sequence characters * * @param string $newline diff --git a/src/Config/Output.php b/src/Config/Output.php index 306d3e4..fc0e13a 100644 --- a/src/Config/Output.php +++ b/src/Config/Output.php @@ -47,20 +47,6 @@ trait Output protected $output_bom; /** - * Returns the CSV Iterator - * - * @return Iterator - */ - abstract protected function getConversionIterator(); - - /** - * Returns the CSV Iterator - * - * @return Iterator - */ - abstract public function getIterator(); - - /** * Sets the CSV encoding charset * * @param string $str @@ -146,6 +132,13 @@ trait Output } /** + * Returns the CSV Iterator + * + * @return Iterator + */ + abstract public function getIterator(); + + /** * Outputs all data on the CSV file * * @param string $filename CSV downloaded name if present adds extra headers @@ -210,10 +203,17 @@ trait Output */ public function jsonSerialize() { - return iterator_to_array($this->convertToUtf8($this->getConversionIterator()), false); + return iterator_to_array($this->convertToUtf8($this->getCsvIterator()), false); } /** + * Returns the CSV Iterator + * + * @return Iterator + */ + abstract protected function getCsvIterator(); + + /** * Convert Csv file into UTF-8 * * @param Iterator $iterator @@ -265,7 +265,7 @@ trait Output { $doc = new DomDocument('1.0', 'UTF-8'); $root = $doc->createElement($root_name); - $iterator = $this->convertToUtf8($this->getConversionIterator()); + $iterator = $this->convertToUtf8($this->getCsvIterator()); foreach ($iterator as $row) { $item = $doc->createElement($row_name); array_walk($row, function ($value) use (&$item, $doc, $cell_name) { diff --git a/src/Reader.php b/src/Reader.php index f45b1bf..9cae134 100644 --- a/src/Reader.php +++ b/src/Reader.php @@ -42,14 +42,7 @@ class Reader extends AbstractCsv */ public function fetch(callable $callable = null) { - $this->addFilter(function ($row) { - return is_array($row); - }); - $iterator = $this->getIterator(); - $iterator = $this->applyBomStripping($iterator); - $iterator = $this->applyIteratorFilter($iterator); - $iterator = $this->applyIteratorSortBy($iterator); - $iterator = $this->applyIteratorInterval($iterator); + $iterator = $this->getCsvIterator(); return $this->applyCallable($iterator, $callable); } @@ -315,9 +308,9 @@ class Reader extends AbstractCsv */ protected function getRow($offset) { - $csv = $this->getIterator(); - $csv->setFlags($this->getFlags() & ~SplFileObject::READ_CSV); - $iterator = new LimitIterator($csv, $offset, 1); + $iterator = $this->getIterator(); + $iterator->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY); + $iterator = new LimitIterator($iterator, $offset, 1); $iterator->rewind(); $res = $iterator->current(); |