summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorignace nyamagana butera <nyamsprod@gmail.com>2015-11-27 12:02:17 +0100
committerignace nyamagana butera <nyamsprod@gmail.com>2015-11-27 12:02:17 +0100
commitb2eb2c573e7616a11ca52c35186b6f8b9154f40f (patch)
treeff0311303f1bb11b6d204e6e822f779aa564a7f3 /src
parenta94b152004b070cccf3a6cb669f247a6bd764bd6 (diff)
downloadcsv-b2eb2c573e7616a11ca52c35186b6f8b9154f40f.zip
csv-b2eb2c573e7616a11ca52c35186b6f8b9154f40f.tar.gz
csv-b2eb2c573e7616a11ca52c35186b6f8b9154f40f.tar.bz2
Remove SplFileObject flags
Diffstat (limited to 'src')
-rw-r--r--src/AbstractCsv.php22
-rw-r--r--src/Config/Controls.php45
-rw-r--r--src/Config/Output.php32
-rw-r--r--src/Reader.php15
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();