How to get RecursiveDirectoryIterator to exclude hidden folders

I have a recursiveDirectoryIterator like this:

$theme_iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($theme_folder_path)
);
foreach ($theme_iterator as $file_object) {
   // Stuff
}

      

The problem is that she's iterating into hidden .svn folders. How can I prevent this?

Edit:

I can't just add something like this to the foreach, because the files from the hidden folder are already in the array at this point, and they are not all hidden.

if (strpos($file_object, ".") ===0) {
    continue;
}

      

+3
php


source to share


3 answers


<?php
class RecursiveDotFilterIterator extends  RecursiveFilterIterator
{
    public function accept()
    {
        return '.' !== substr($this->current()->getFilename(), 0, 1);
    }
}

$iterator = new RecursiveIteratorIterator(
    new RecursiveDotFilterIterator(
        new RecursiveDirectoryIterator('.')
    )
);
foreach ($iterator as $x) {
    //do stuff
}

      



+4


source to share


Set flag

RecursiveDirectoryIterator::SKIP_DOTS

to exclude files:



$iterator = new RecursiveDirectoryIterator($theme_folder_path);

$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
    $theme_iterator = new RecursiveIteratorIterator(
       $iterator
);

      

+2


source to share


If you want to do it in one line:

$iterator = new RecursiveDirectoryIterator($path_directory, RecursiveDirectoryIterator::SKIP_DOTS); 

      

-1


source to share







All Articles
Loading...
X
Show
Funny
Dev
Pics