Nette\Loaders\RobotLoader::refresh PHP Method

refresh() private method

Refreshes class list.
private refresh ( ) : void
return void
    private function refresh()
    {
        $this->refreshed = TRUE;
        // prevents calling refresh() or updateFile() in tryLoad()
        $files = $missing = [];
        foreach ($this->classes as $class => $info) {
            if (is_array($info)) {
                $files[$info['file']]['time'] = $info['time'];
                $files[$info['file']]['classes'][] = $info['orig'];
            } else {
                $missing[$class] = $info;
            }
        }
        $this->classes = [];
        foreach ($this->scanPaths as $path) {
            foreach (is_file($path) ? [new SplFileInfo($path)] : $this->createFileIterator($path) as $file) {
                $file = $file->getPathname();
                if (isset($files[$file]) && $files[$file]['time'] == filemtime($file)) {
                    $classes = $files[$file]['classes'];
                } else {
                    $classes = $this->scanPhp(file_get_contents($file));
                }
                $files[$file] = ['classes' => [], 'time' => filemtime($file)];
                foreach ($classes as $class) {
                    $info =& $this->classes[strtolower($class)];
                    if (isset($info['file'])) {
                        throw new Nette\InvalidStateException("Ambiguous class {$class} resolution; defined in {$info['file']} and in {$file}.");
                    }
                    $info = ['file' => $file, 'time' => filemtime($file), 'orig' => $class];
                }
            }
        }
        $this->classes += $missing;
    }