summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIgnace Nyamagana Butera <nyamsprod@gmail.com>2014-05-19 10:44:15 +0200
committerIgnace Nyamagana Butera <nyamsprod@gmail.com>2014-05-19 10:44:15 +0200
commit6cf9e7be099a8fd17ad7d53726fea36833a0a7b6 (patch)
tree2c83c2e32f4e4d613fbef458f6a2893827bf1bc5 /src
parentc2ad46a6b2f67ba9bc092b4ed6ee1ec0c3976d0f (diff)
downloadcsv-6cf9e7be099a8fd17ad7d53726fea36833a0a7b6.zip
csv-6cf9e7be099a8fd17ad7d53726fea36833a0a7b6.tar.gz
csv-6cf9e7be099a8fd17ad7d53726fea36833a0a7b6.tar.bz2
adding AbstractCsv::newInstance
Diffstat (limited to 'src')
-rw-r--r--src/AbstractCsv.php43
-rw-r--r--src/Reader.php19
-rw-r--r--src/Writer.php19
3 files changed, 43 insertions, 38 deletions
diff --git a/src/AbstractCsv.php b/src/AbstractCsv.php
index f493919..af77e5a 100644
--- a/src/AbstractCsv.php
+++ b/src/AbstractCsv.php
@@ -112,6 +112,49 @@ abstract class AbstractCsv implements JsonSerializable, IteratorAggregate
}
/**
+ * Create a {@link AbstractCsv} instance from another {@link AbstractCsv} object
+ *
+ * @param string $class_name the class to be instantiated
+ * @param string $open_mode the file open mode flag
+ *
+ * @return {@link AbstractCsv}
+ */
+ protected function newInstance($class_name, $open_mode)
+ {
+ $csv = new $class_name($this->path, $open_mode);
+ $csv->delimiter = $this->delimiter;
+ $csv->enclosure = $this->enclosure;
+ $csv->escape = $this->escape;
+ $csv->encodingFrom = $this->encodingFrom;
+
+ return $csv;
+ }
+
+ /**
+ * Create a {@link Writer} instance from a {@link AbstractCsv} object
+ *
+ * @param string $open_mode the file open mode flag
+ *
+ * @return \League\Csv\Writer object
+ */
+ public function newWriter($open_mode = 'r+')
+ {
+ return $this->newInstance('\League\Csv\Writer', $open_mode);
+ }
+
+ /**
+ * Create a {@link Reader} instance from a {@link AbstractCsv} object
+ *
+ * @param string $open_mode the file open mode flag
+ *
+ * @return \League\Csv\Reader object
+ */
+ public function newReader($open_mode = 'r+')
+ {
+ return $this->newInstance('\League\Csv\Reader', $open_mode);
+ }
+
+ /**
* Detect the CSV file delimiter
*
* @param integer $nb_rows
diff --git a/src/Reader.php b/src/Reader.php
index a8ad730..e0dea9d 100644
--- a/src/Reader.php
+++ b/src/Reader.php
@@ -244,23 +244,4 @@ class Reader extends AbstractCsv
{
return $this->newWriter($open_mode);
}
-
- /**
- * Create a {@link Writer} instance from a {@link Reader} object
- *
- * @param string $open_mode the file open mode flag
- *
- * @return \League\Csv\Writer object
- */
- public function newWriter($open_mode = 'r+')
- {
- $csv = new Writer($this->path, $open_mode);
- $csv->setDelimiter($this->delimiter);
- $csv->setEnclosure($this->enclosure);
- $csv->setEscape($this->escape);
- $csv->setFlags($this->flags);
- $csv->setEncodingFrom($this->encodingFrom);
-
- return $csv;
- }
}
diff --git a/src/Writer.php b/src/Writer.php
index 8602fed..f9027ae 100644
--- a/src/Writer.php
+++ b/src/Writer.php
@@ -328,23 +328,4 @@ class Writer extends AbstractCsv
{
return $this->newReader($open_mode);
}
-
- /**
- * Create a {@link Reader} instance from a {@link Writer} object
- *
- * @param string $open_mode the file open mode flag
- *
- * @return \League\Csv\Reader object
- */
- public function newReader($open_mode = 'r+')
- {
- $csv = new Reader($this->path, $open_mode);
- $csv->setDelimiter($this->delimiter);
- $csv->setEnclosure($this->enclosure);
- $csv->setEscape($this->escape);
- $csv->setFlags($this->flags);
- $csv->setEncodingFrom($this->encodingFrom);
-
- return $csv;
- }
}