PDepend\Engine::createFileIterator PHP Method

createFileIterator() private method

This method will create an iterator instance which contains all files that are part of the parsing process.
private createFileIterator ( ) : Iterator
return Iterator
    private function createFileIterator()
    {
        if (count($this->directories) === 0 && count($this->files) === 0) {
            throw new \RuntimeException('No source directory and file set.');
        }
        $fileIterator = new \AppendIterator();
        foreach ($this->files as $file) {
            $fileIterator->append(new Iterator(new \GlobIterator($file), $this->fileFilter));
        }
        foreach ($this->directories as $directory) {
            $fileIterator->append(new Iterator(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($directory . '/', \RecursiveDirectoryIterator::FOLLOW_SYMLINKS)), $this->fileFilter, $directory));
        }
        // TODO: It's important to validate this behavior, imho there is something
        //       wrong in the iterator code used above.
        // Strange: why is the iterator not unique and why does this loop fix it?
        $files = array();
        foreach ($fileIterator as $file) {
            if (is_string($file)) {
                $files[$file] = $file;
            } else {
                $pathname = realpath($file->getPathname());
                $files[$pathname] = $pathname;
            }
        }
        foreach ($files as $key => $file) {
            if (!$this->fileFilter->accept($file, $file)) {
                unset($files[$key]);
            }
        }
        ksort($files);
        // END
        return new \ArrayIterator(array_values($files));
    }