Refactor readers for better di (#457)
* Refactor readers to get a proper DI Similar to what was done with writers, readers also needed to be updated to match the new way of doing things. This commits promotes a better DI (factories, injection through constructors). * Escapers should not be singletons Instead, they should be proper object that can be injected where needed.
This commit is contained in:
1 parent
4d6437fa77
commit
b7e46740ce
66 files changed
+1095
-618
No files matched your search
@@ -2,9 +2,11 @@
|
||||
|
||||
namespace Box\Spout\Reader;
|
||||
|
||||
use Box\Spout\Common\Creator\HelperFactory;
|
||||
use Box\Spout\Common\Exception\UnsupportedTypeException;
|
||||
use Box\Spout\Common\Helper\GlobalFunctionsHelper;
|
||||
use Box\Spout\Common\Type;
|
||||
use Box\Spout\Reader\XLSX\Helper\SharedStringsCaching\CachingStrategyFactory;
|
||||
|
||||
/**
|
||||
* Class ReaderFactory
|
||||
@@ -25,24 +27,53 @@ class ReaderFactory
|
||||
*/
|
||||
public static function create($readerType)
|
||||
{
|
||||
$reader = null;
|
||||
|
||||
switch ($readerType) {
|
||||
case Type::CSV:
|
||||
$reader = new CSV\Reader();
|
||||
break;
|
||||
case Type::XLSX:
|
||||
$reader = new XLSX\Reader();
|
||||
break;
|
||||
case Type::ODS:
|
||||
$reader = new ODS\Reader();
|
||||
break;
|
||||
case Type::CSV: return self::getCSVReader();
|
||||
case Type::XLSX: return self::getXLSXReader();
|
||||
case Type::ODS: return self::getODSReader();
|
||||
default:
|
||||
throw new UnsupportedTypeException('No readers supporting the given type: ' . $readerType);
|
||||
}
|
||||
}
|
||||
|
||||
$reader->setGlobalFunctionsHelper(new GlobalFunctionsHelper());
|
||||
/**
|
||||
* @return CSV\Reader
|
||||
*/
|
||||
private static function getCSVReader()
|
||||
{
|
||||
$optionsManager = new CSV\Manager\OptionsManager();
|
||||
$helperFactory = new HelperFactory();
|
||||
$entityFactory = new CSV\Creator\EntityFactory($helperFactory);
|
||||
$globalFunctionsHelper = $helperFactory->createGlobalFunctionsHelper();
|
||||
|
||||
return $reader;
|
||||
return new CSV\Reader($optionsManager, $globalFunctionsHelper, $entityFactory);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return XLSX\Reader
|
||||
*/
|
||||
private static function getXLSXReader()
|
||||
{
|
||||
$optionsManager = new XLSX\Manager\OptionsManager();
|
||||
$cachingStrategyFactory = new CachingStrategyFactory();
|
||||
$helperFactory = new XLSX\Creator\HelperFactory($cachingStrategyFactory);
|
||||
$entityFactory = new XLSX\Creator\EntityFactory($helperFactory);
|
||||
$globalFunctionsHelper = $helperFactory->createGlobalFunctionsHelper();
|
||||
|
||||
return new XLSX\Reader($optionsManager, $globalFunctionsHelper, $entityFactory, $helperFactory);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ODS\Reader
|
||||
*/
|
||||
private static function getODSReader()
|
||||
{
|
||||
$optionsManager = new ODS\Manager\OptionsManager();
|
||||
$helperFactory = new ODS\Creator\HelperFactory();
|
||||
$entityFactory = new ODS\Creator\EntityFactory($helperFactory);
|
||||
$globalFunctionsHelper = $helperFactory->createGlobalFunctionsHelper();
|
||||
|
||||
return new ODS\Reader($optionsManager, $globalFunctionsHelper, $entityFactory);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user