Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
IndexerHandlerFactory.php
Go to the documentation of this file.
1 <?php
7 
11 
19 {
25  protected $_objectManager = null;
26 
32  protected $handlers = null;
33 
37  private $engineResolver;
38 
46  public function __construct(
48  EngineResolverInterface $engineResolver,
49  array $handlers = []
50  ) {
51  $this->_objectManager = $objectManager;
52  $this->handlers = $handlers;
53  $this->engineResolver = $engineResolver;
54  }
55 
62  public function create(array $data = [])
63  {
64  $currentHandler = $this->engineResolver->getCurrentSearchEngine();
65  if (!isset($this->handlers[$currentHandler])) {
66  throw new \LogicException(
67  'There is no such indexer handler: ' . $currentHandler
68  );
69  }
70  $indexer = $this->_objectManager->create($this->handlers[$currentHandler], $data);
71 
72  if (!$indexer instanceof IndexerInterface) {
73  throw new \InvalidArgumentException(
74  $currentHandler . ' indexer handler doesn\'t implement ' . IndexerInterface::class
75  );
76  }
77 
78  if ($indexer && !$indexer->isAvailable()) {
79  throw new \LogicException(
80  'Indexer handler is not available: ' . $currentHandler
81  );
82  }
83  return $indexer;
84  }
85 }
$objectManager
Definition: bootstrap.php:17
__construct(ObjectManagerInterface $objectManager, EngineResolverInterface $engineResolver, array $handlers=[])