Нет описания

ContainerFactory.php 952B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace MailPoet\DI;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoetVendor\Symfony\Component\DependencyInjection\Container;
  5. use MailPoetVendor\Symfony\Component\DependencyInjection\ContainerBuilder;
  6. class ContainerFactory {
  7. /** @var IContainerConfigurator */
  8. private $configurator;
  9. public function __construct(
  10. IContainerConfigurator $configurator
  11. ) {
  12. $this->configurator = $configurator;
  13. }
  14. /**
  15. * @return Container
  16. */
  17. public function getContainer() {
  18. $dumpClass = '\\' . $this->configurator->getDumpNamespace() . '\\' . $this->configurator->getDumpClassname();
  19. if (class_exists($dumpClass)) {
  20. $container = new $dumpClass();
  21. } else { // Only for dev environment
  22. $container = $this->getConfiguredContainer();
  23. $container->compile();
  24. }
  25. return $container;
  26. }
  27. public function getConfiguredContainer() {
  28. return $this->configurator->configure(new ContainerBuilder());
  29. }
  30. }