123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\TestFramework;
- use Magento\Framework\App\Filesystem\DirectoryList;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\Framework\Filesystem\DriverPool;
- /**
- * Class ObjectManagerFactory
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
- {
- /**
- * Locator class name
- *
- * @var string
- */
- protected $_locatorClassName = \Magento\TestFramework\ObjectManager::class;
- /**
- * Config class name
- *
- * @var string
- */
- protected $_configClassName = \Magento\TestFramework\ObjectManager\Config::class;
- /**
- * @var string
- */
- protected $envFactoryClassName = \Magento\TestFramework\App\EnvironmentFactory::class;
- /**
- * @var array
- */
- protected $_primaryConfigData = null;
- /**
- * Restore locator instance
- *
- * @param ObjectManager $objectManager
- * @param DirectoryList $directoryList
- * @param array $arguments
- * @return ObjectManager
- */
- public function restore(ObjectManager $objectManager, $directoryList, array $arguments)
- {
- \Magento\TestFramework\ObjectManager::setInstance($objectManager);
- $this->directoryList = $directoryList;
- $objectManager->configure($this->_primaryConfigData);
- $objectManager->addSharedInstance($this->directoryList, \Magento\Framework\App\Filesystem\DirectoryList::class);
- $objectManager->addSharedInstance($this->directoryList, \Magento\Framework\Filesystem\DirectoryList::class);
- $deploymentConfig = $this->createDeploymentConfig($directoryList, $this->configFilePool, $arguments);
- $this->factory->setArguments($arguments);
- $objectManager->addSharedInstance($deploymentConfig, \Magento\Framework\App\DeploymentConfig::class);
- $objectManager->addSharedInstance(
- $objectManager->get(\Magento\Framework\App\ObjectManager\ConfigLoader::class),
- \Magento\Framework\ObjectManager\ConfigLoaderInterface::class
- );
- $objectManager->get(\Magento\Framework\Interception\PluginListInterface::class)->reset();
- $objectManager->configure(
- $objectManager->get(\Magento\Framework\App\ObjectManager\ConfigLoader::class)->load('global')
- );
- return $objectManager;
- }
- /**
- * Load primary config
- *
- * @param \Magento\Framework\App\Filesystem\DirectoryList $directoryList
- * @param DriverPool $driverPool
- * @param mixed $argumentMapper
- * @param string $appMode
- * @return array
- */
- protected function _loadPrimaryConfig(DirectoryList $directoryList, $driverPool, $argumentMapper, $appMode)
- {
- if (null === $this->_primaryConfigData) {
- $this->_primaryConfigData = array_replace(
- parent::_loadPrimaryConfig($directoryList, $driverPool, $argumentMapper, $appMode),
- [
- 'default_setup' => ['type' => \Magento\TestFramework\Db\ConnectionAdapter::class]
- ]
- );
- $diPreferences = [];
- $diPreferencesPath = __DIR__ . '/../../../etc/di/preferences/';
- $preferenceFiles = glob($diPreferencesPath . '*.php');
- foreach ($preferenceFiles as $file) {
- if (!is_readable($file)) {
- throw new LocalizedException(__("'%1' is not readable file.", $file));
- }
- $diPreferences = array_replace($diPreferences, include $file);
- }
- $this->_primaryConfigData['preferences'] = array_replace(
- $this->_primaryConfigData['preferences'],
- $diPreferences
- );
- }
- return $this->_primaryConfigData;
- }
- }
|