dirList = $dirList; $this->configFilePool = $configFilePool; $this->driverPool = $driverPool; if (null !== $file) { if (!preg_match('/^[a-z\d\.\-]+\.php$/i', $file)) { throw new \InvalidArgumentException("Invalid file name: {$file}"); } $this->files = [$file]; } else { $this->files = $this->configFilePool->getPaths(); } } /** * Gets the file name * * @return array */ public function getFiles() { return $this->files; } /** * Method loads merged configuration within all configuration files. * To retrieve specific file configuration, use FileReader. * $fileKey option is deprecated since version 2.2.0. * * @param string $fileKey The file key (deprecated) * @return array * @throws FileSystemException If file can not be read * @throws RuntimeException If file is invalid * @throws \Exception If file key is not correct * @see FileReader */ public function load($fileKey = null) { $path = $this->dirList->getPath(DirectoryList::CONFIG); $fileDriver = $this->driverPool->getDriver(DriverPool::FILE); $result = []; if ($fileKey) { $filePath = $path . '/' . $this->configFilePool->getPath($fileKey); if ($fileDriver->isExists($filePath)) { $result = include $filePath; if (!is_array($result)) { throw new RuntimeException(new Phrase("Invalid configuration file: '%1'", [$filePath])); } } } else { $configFiles = $this->configFilePool->getPaths(); $allFilesData = []; $result = []; foreach (array_keys($configFiles) as $fileKey) { $configFile = $path . '/' . $this->configFilePool->getPath($fileKey); if ($fileDriver->isExists($configFile)) { $fileData = include $configFile; if (!is_array($fileData)) { throw new RuntimeException(new Phrase("Invalid configuration file: '%1'", [$configFile])); } } else { continue; } $allFilesData[$configFile] = $fileData; if ($fileData) { $result = array_replace_recursive($result, $fileData); } } } return $result ?: []; } /** * Loads the configuration file. * * @param string $fileKey The file key * @param string $pathConfig The path config * @param bool $ignoreInitialConfigFiles Whether ignore custom pools * @return array * @deprecated 101.0.0 Magento does not support custom config file pools since 2.2.0 version * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function loadConfigFile($fileKey, $pathConfig, $ignoreInitialConfigFiles = false) { return $this->load($fileKey); } }