![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-catalog-search/Model/Indexer/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\CatalogSearch\Model\Indexer; use Magento\Framework\Indexer\SaveHandler\IndexerInterface; use Magento\Framework\ObjectManagerInterface; use Magento\Framework\Search\EngineResolverInterface; /** * Indexer handler factory. * * @api * @since 100.0.2 */ class IndexerHandlerFactory { /** * Object Manager instance * * @var ObjectManagerInterface */ protected $_objectManager = null; /** * Instance name to create * * @var string */ protected $handlers = null; /** * @var EngineResolverInterface */ private $engineResolver; /** * Factory constructor * * @param ObjectManagerInterface $objectManager * @param EngineResolverInterface $engineResolver * @param string[] $handlers */ public function __construct( ObjectManagerInterface $objectManager, EngineResolverInterface $engineResolver, array $handlers = [] ) { $this->_objectManager = $objectManager; $this->handlers = $handlers; $this->engineResolver = $engineResolver; } /** * Create indexer handler * * @param array $data * @return IndexerInterface */ public function create(array $data = []) { $currentHandler = $this->engineResolver->getCurrentSearchEngine(); if (!isset($this->handlers[$currentHandler])) { throw new \LogicException( 'There is no such indexer handler: ' . $currentHandler ); } $indexer = $this->_objectManager->create($this->handlers[$currentHandler], $data); if (!$indexer instanceof IndexerInterface) { throw new \InvalidArgumentException( $currentHandler . ' indexer handler doesn\'t implement ' . IndexerInterface::class ); } if ($indexer && !$indexer->isAvailable()) { throw new \LogicException( 'Indexer handler is not available: ' . $currentHandler ); } return $indexer; } }