folderList = $folders; } public function getEntities() : void { $this->entities = []; foreach($this->folderList as $namespace => $folder) { foreach(static::files($folder) as $file) { $name = $file->getBasename("." . $file->getExtension()); $subNs = substr($file->getPath(), strlen($folder)); $entity = rtrim($namespace, "\\") . ( $subNs ? "\\$subNs" : "" ) . "\\{$name}"; $this->entities[$entity] = $entity::resolveEntity(); } } } protected static function files(string $path, string $fileExtension = "") : \Generator { if ( \file_exists($path) ) { $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST, \RecursiveIteratorIterator::CATCH_GET_CHILD); foreach ($iterator as $file) { if ( $file->isFile() || $file->isDir() ) { if ($fileExtension) { if ( $file->getExtension() === $fileExtension ) { yield $file; } } else { if ( $file->isFile() ) { yield $file; } } } } } } }