* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter; use Context; use Controller; use PrestaShop\PrestaShop\Core\Exception\ContainerNotFoundException; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Find the container */ class ContainerFinder { /** * @var Context */ protected $context; /** * ContainerFinder constructor. * * @param Context $context */ public function __construct(Context $context) { $this->context = $context; } /** * @return ContainerBuilder|ContainerInterface * * @throws ContainerNotFoundException */ public function getContainer() { if (isset($this->context->container)) { return $this->context->container; } if (isset($this->context->controller) && $this->context->controller instanceof Controller && ($container = $this->context->controller->getContainer()) && null !== $container ) { return $container; } $container = SymfonyContainer::getInstance(); if (null !== $container) { return $container; } throw new ContainerNotFoundException('Kernel Container is not available'); } }