Iter PHP ator class

Я работаю с рекурсивными итераторами PHP SPL, они меня довольно сбивают с толку, но я учусь.

Я использую их в проекте, где мне нужно рекурсивно получить все файлы и исключить папки из моего результата. Я изначально использовал этот метод ...

$directory = new RecursiveDirectoryIterator($path);
$iterator = new RecursiveIteratorIterator($directory,
                RecursiveIteratorIterator::CHILD_FIRST);

foreach ($iterator as $fileinfo) {    
    if ($fileinfo->isDir()) {
        //skip directories
        //continue;
    }else{
        // process files
    }
}

Но затем пользователь SO предложил мне использовать этот метод, чтобы мне не пришлось использовать метод isDir () в моем цикле ...

$directory = new RecursiveDirectoryIterator($path,
                        RecursiveDirectoryIterator::SKIP_DOTS);
$iterator = new RecursiveIteratorIterator($directory,
                        RecursiveIteratorIterator::LEAVES_ONLY);

Обратите внимание, что я использовал RecursiveDirectoryIterator :: SKIP_DOTS в конструкторе RecursiveDirectoryIterator , который должен пропускать папки или . и ..

Теперь я запутался, потому что после некоторого теста, даже без использования RecursiveDirectoryIterator :: SKIP_DOTS , похоже, они не отображаются, я использую Windows, может быть Причина, точки появляются только в системе типа Unix? Или я запутался до такой степени, что что-то упустил?

Также, используя RecursiveIteratorIterator :: LEAVES_ONLY вместо RecursiveIteratorIterator :: CHILD_FIRST , папки не будут отображаться в моем результат, которого я хочу, но не понимаю почему? В документации нет информации об этом

6
задан hakre 18 April 2013 в 15:46
поделиться