loadedExtensions = array_map('strtolower', get_loaded_extensions()); natcasesort($this->loadedExtensions); } /** * @return string[] */ public function getLoadedExtensions(): array { return $this->loadedExtensions; } public function getLoadedExtensionsCount(): int { return count($this->getLoadedExtensions()); } /** * @param string[] $excludedExtensions */ public function getExtensionMap(array $excludedExtensions): ExtensionMap { if ($this->extensionMap === null) { $this->extensionMap = $this->buildExtensionMaps($excludedExtensions); } return $this->extensionMap; } public function getExtensionInfo(string $extensionInfo): ExtensionInfo { return new ExtensionInfo($extensionInfo); } /** * @param string[] $excludedExtensions */ private function buildExtensionMaps(array $excludedExtensions): ExtensionMap { $extensionClasses = $extensionFunctions = $extensionConstants = $extensionDependencies = $uncheckedExtensions = []; $loadedExtensions = $this->getLoadedExtensions(); foreach ($loadedExtensions as $loadedExtension) { if (in_array($loadedExtension, $excludedExtensions, true)) { continue; } $extensionInfo = $this->getExtensionInfo($loadedExtension); $classes = $extensionInfo->getClasses(); if (!empty($classes)) { $extensionClasses = array_merge($extensionClasses, array_map(function () use ($loadedExtension) { return $loadedExtension; }, array_flip($classes))); } $functions = $extensionInfo->getFunctions(); if (!empty($functions)) { $extensionFunctions = array_merge($extensionFunctions, array_map(function () use ($loadedExtension) { return $loadedExtension; }, array_flip($functions))); } $constants = $extensionInfo->getConstants(); if (!empty($constants)) { $extensionConstants = array_merge($extensionConstants, array_map(function () use ($loadedExtension) { return $loadedExtension; }, array_flip($constants))); } /*$dependencies = $extensionInfo->getRequiredDependencies(); if (!empty($dependencies)) { natcasesort($dependencies); foreach ($dependencies as $dependency => $status) { if (in_array($dependency, $excludedExtensions, true)) { continue; } if (!isset($extensionDependencies[$loadedExtension][strtolower($status)])) { $extensionDependencies[$loadedExtension][strtolower($status)] = []; } $extensionDependencies[$loadedExtension][strtolower($status)][] = $dependency; } }*/ if (empty($classes) && empty($functions) && empty($constants) && empty($dependencies)) { $uncheckedExtensions[] = $loadedExtension; } } return new ExtensionMap( $extensionClasses, $extensionFunctions, $extensionConstants, $extensionDependencies, $uncheckedExtensions ); } }