diff --git a/src/Spout/Reader/ReaderFactory.php b/src/Spout/Reader/ReaderFactory.php index 3860008..0d9f481 100644 --- a/src/Spout/Reader/ReaderFactory.php +++ b/src/Spout/Reader/ReaderFactory.php @@ -29,20 +29,56 @@ class ReaderFactory switch ($readerType) { case Type::CSV: - $reader = new CSV\Reader(); + $reader = self::createCsvReader(); break; case Type::XLSX: - $reader = new XLSX\Reader(); + $reader = self::createXlsxReader(); break; case Type::ODS: - $reader = new ODS\Reader(); + $reader = self::createOdsReader(); break; default: throw new UnsupportedTypeException('No readers supporting the given type: ' . $readerType); } - $reader->setGlobalFunctionsHelper(new GlobalFunctionsHelper()); + return $reader; + } + + /** + * @return CSV\Reader + */ + public static function createCsvReader() { + $reader = new CSV\Reader(); + self::setDefaultGlobalFunctionHelper($reader); return $reader; } + + /** + * @return XLSX\Reader + */ + public static function createXlsxReader() { + $reader = new XLSX\Reader(); + self::setDefaultGlobalFunctionHelper($reader); + + return $reader; + } + + /** + * @return ODS\Reader + */ + public static function createOdsReader() { + $reader = new ODS\Reader(); + self::setDefaultGlobalFunctionHelper($reader); + + return $reader; + } + + /** + * @param AbstractReader $reader + */ + private static function setDefaultGlobalFunctionHelper($reader) + { + $reader->setGlobalFunctionsHelper(new GlobalFunctionsHelper()); + } } diff --git a/tests/Spout/Reader/ReaderFactoryTest.php b/tests/Spout/Reader/ReaderFactoryTest.php index 57a0b55..8048e68 100644 --- a/tests/Spout/Reader/ReaderFactoryTest.php +++ b/tests/Spout/Reader/ReaderFactoryTest.php @@ -18,4 +18,25 @@ class ReaderFactoryTest extends \PHPUnit_Framework_TestCase { ReaderFactory::create('unsupportedType'); } + + public function testCreateCsvReaderShouldProvideACsvReader() + { + $reader = ReaderFactory::createCsvReader(); + + $this->assertInstanceOf('Box\Spout\Reader\CSV\Reader', $reader); + } + + public function testCreateXlsxReaderShouldProvideAXlsxReader() + { + $reader = ReaderFactory::createXlsxReader(); + + $this->assertInstanceOf('Box\Spout\Reader\XLSX\Reader', $reader); + } + + public function testCreateOdsReaderShouldProvideAOdsReader() + { + $reader = ReaderFactory::createOdsReader(); + + $this->assertInstanceOf('Box\Spout\Reader\ODS\Reader', $reader); + } }