Я пытаюсь рекурсивно добавлять все файлы в свой проект, для этого я использовал эту функцию:
<?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(); }