protected function getClassesInNormalizedAutoloadPath($baseAutoloadPath, $autoloadNamespace)
{
$autoloadNamespace = trim($autoloadNamespace, '\\') . '\\';
$directories = [''];
while ($directories !== []) {
$currentRelativeDirectory = array_pop($directories);
$currentAbsoluteDirectory = $baseAutoloadPath . $currentRelativeDirectory;
if ($handle = opendir($currentAbsoluteDirectory)) {
while (false !== ($filename = readdir($handle))) {
if ($filename[0] === '.') {
continue;
}
if ($currentAbsoluteDirectory !== $baseAutoloadPath && $this->isPathAutoloadEntryPoint($currentAbsoluteDirectory)) {
continue;
}
$pathAndFilename = $currentAbsoluteDirectory . $filename;
if (is_dir($pathAndFilename)) {
$directories[] = $currentRelativeDirectory . $filename . '/';
continue;
}
if (strpos(strrev($filename), 'php.') === 0) {
$potentialClassNamespace = $autoloadNamespace . str_replace('/', '\\', $currentRelativeDirectory) . basename($filename, '.php');
(yield $potentialClassNamespace => $pathAndFilename);
}
}
closedir($handle);
}
}
}