Почему isDot () терпит неудачу? (PHP)

Я завершаю сегмент кода, в котором перечислены файлы в каталоге. У меня нет проблем с перечислением файлов в каталоге, но по какой-то причине я могу заставить метод isDot () работать, чтобы убедиться, что файл не является. или ".." . Ниже приведена следующая ошибка:

Fatal error: Call to undefined method SplFileInfo::isDot() in .... 

Прежде чем переключиться на использование рекурсивного итератора, я использовал Итератор каталогов, и он работал нормально. Что-то не так с кодом ниже? Он должен работать.

 $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathToFolder)); //if there is a subdirectory it makes sure the proper extension is passed foreach($files as $name => $file){ if (!$file->isDot()) { //this is where it shuts me down $realfile = str_replace($pathToFolder, "", $file); $url = getDownloadLink($folderID, $realfile); $fileArray[] = $url; } } 

Это потому, что DirectoryIterator::current() (метод, вызывающий внутри foreach -loop) возвращает объект, который сам по себе является свойством DirectoryIterator . FileSystemIterator (который RecursiveDirectoryIterator расширяет) возвращает объект SplFileInfo умолчанию. Вы можете влиять на то, что возвращается, через флаги

 $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $pathToFolder, FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_SELF)); 

Но в вашем случае вам не нужно тестировать, если элемент является точечным файлом. Просто установите FilesystemIterator::SKIP_DOTS и они вообще не появятся. Обратите внимание, что это также поведение по умолчанию .