-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathFactory.php
48 lines (41 loc) · 1.09 KB
/
Factory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
namespace Jh\Import\Archiver;
use Jh\Import\Config;
use Jh\Import\Source\Csv;
use Jh\Import\Source\Source;
use Magento\Framework\ObjectManagerInterface;
/**
* @author Aydin Hassan <aydin@wearejh.com>
*/
class Factory
{
/**
* @var ObjectManagerInterface
*/
private $objectManager;
/**
* @var array
*/
private static $sourceToArchiverMap = [
Csv::class => CsvArchiver::class
];
public function __construct(ObjectManagerInterface $objectManager)
{
$this->objectManager = $objectManager;
}
public function getArchiverForSource(Source $source, Config $config): Archiver
{
foreach (self::$sourceToArchiverMap as $class => $archiver) {
if (get_class($source) === $class || is_subclass_of($source, $class)) {
return $this->objectManager->create(
$archiver,
[
'source' => $source,
'config' => $config
]
);
}
}
return new NullArchiver();
}
}