58 private $fileIterators = [];
73 $this->modulesList = $moduleList;
96 return $this->getFilesIterator(
'composer.json');
107 private function getFilesIterator($filename, $subDir =
'')
109 if (!isset($this->fileIterators[$subDir][$filename])) {
110 $this->fileIterators[$subDir][$filename] = $this->fileIteratorFactory->create(
111 $this->getFiles($filename, $subDir)
114 return $this->fileIterators[$subDir][$filename];
124 private function getFiles($filename, $subDir =
'')
127 foreach ($this->modulesList->getNames() as $moduleName) {
128 $moduleSubDir = $this->
getModuleDir($subDir, $moduleName);
129 $file = $moduleSubDir .
'/' . $filename;
130 $directoryRead = $this->readFactory->create($moduleSubDir);
131 $path = $directoryRead->getRelativePath($file);
132 if ($directoryRead->isExist(
$path)) {
144 public function getActionFiles()
147 foreach ($this->modulesList->getNames() as $moduleName) {
149 if (!file_exists($actionDir)) {
152 $dirIterator = new \RecursiveDirectoryIterator($actionDir, \RecursiveDirectoryIterator::SKIP_DOTS);
153 $recursiveIterator = new \RecursiveIteratorIterator($dirIterator, \RecursiveIteratorIterator::LEAVES_ONLY);
154 $namespace = str_replace(
'_',
'\\', $moduleName);
156 foreach ($recursiveIterator as $actionFile) {
157 $actionName = str_replace(
'/',
'\\', str_replace($actionDir,
'', $actionFile->getPathname()));
159 $actions[strtolower($action)] = $action;
174 if (isset($this->customModuleDirs[$moduleName][
$type])) {
175 return $this->customModuleDirs[$moduleName][
$type];
177 return $this->moduleDirs->getDir($moduleName,
$type);
190 $this->customModuleDirs[$moduleName][
$type] =
$path;
191 $this->fileIterators = [];
getModuleDir($type, $moduleName)
__construct(Dir $moduleDirs, ModuleListInterface $moduleList, FileIteratorFactory $fileIteratorFactory, Filesystem\Directory\ReadFactory $readFactory)
const MODULE_CONTROLLER_DIR
getConfigurationFiles($filename)
setModuleDir($moduleName, $type, $path)