Рекурсивно требуя всех файлов

Я пытаюсь рекурсивно добавлять все файлы в свой проект, для этого я использовал эту функцию:

<?php function RequireFiles() { $directory = new RecursiveDirectoryIterator(abspath . "lib/"); $recIterator = new RecursiveIteratorIterator($directory); foreach ($recIterator as $item) { print $item->getPathname() . "<br />"; //include $item->getPathname(); } } ?> 

взятые отсюда с незначительными изменениями .

Моя проблема заключается в том, что мой вывод выглядит следующим образом:

E: / проекты / PHP / проект / Проект / Библиотека.
E: / проекты / PHP / проект / Проект / Библиотека ..
E: / проекты / PHP / проект / Проект / Библиотека \ класс.
E: / проекты / PHP / проект / Проект / Библиотека \ класс ..
E: / проекты / PHP / проект / Проект / Библиотека \ класс \ Log.php
E: / проекты / PHP / проект / Проект / Библиотека \ черт.
E: / проекты / PHP / проект / Проект / Библиотека \ черта ..
E: / проекты / PHP / проект / Проект / Библиотека \ черт \ SetLink.php
E: / проекты / PHP / проект / Проект / Библиотека \ черт \ MysqliEsp.php
E: / проекты / PHP / проект / проект / Lib \ массивы.
E: / проекты / PHP / проект / проект / Lib \ массивы ..
E: / проекты / PHP / проект / проект / Lib \ Массивы \ tables.php

Я не хочу иметь \. и \.. на конце, и на какое-то время искали ответ, и не можем узнать, как избавиться от этих маленьких ужасов!

Может ли кто-нибудь помочь мне исправить это или указать мне в сторону вопросов и ответов, которые это делают?

Просто передайте в конструкторе флаг FilesystemIterator::SKIP_DOTS , например

  $ directory = new РекурсивныйDirectoryIterator (abspath. "lib /"
                                             , FilesystemIterator :: SKIP_DOTS ); 

Класс SplFileInfo (это то, что вы получаете от RecursiveIteratorIterator и RecursiveDirectoryIterator) имеет метод, называемый isFile() .

Вы можете просто добавить, if( !$item->isFile() ) continue; к вашему foreach:

 foreach ( $recIterator as $item ) { if( !$item->isFile() ) continue; print $item->getPathname() . "<br />"; //include $item->getPathname(); } 

Попробуйте проверить имя ($ key) и отбросить то, что вы не хотите:

 foreach ($recIterator as $k=>$item) { if ($k == '.' || $k == '..') { continue; } print $item->getPathname() . "<br />"; //include $item->getPathname(); }