Allow getting an instance of a reader without Exception

This commit is contained in:
Yannick ROGER 2018-12-01 16:04:50 +01:00
parent e88b8fb432
commit 78d672bbfe
2 changed files with 61 additions and 4 deletions

View File

@ -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());
}
}

View File

@ -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);
}
}