(PHP 5 >= 5.1.2)
RecursiveDirectoryIterator::__construct — Constructs a RecursiveDirectoryIterator
$path
   [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO
  ] )
   Constructs a RecursiveDirectoryIterator()
   for the provided path.
  
pathThe path of the directory to be iterated over.
flagsFlags may be provided which will affect the behavior of some methods. A list of the flags can found under FilesystemIterator predefined constants. They can also be set later with FilesystemIterator::setFlags().
Returns the newly created RecursiveDirectoryIterator.
   Throws an UnexpectedValueException
   if the path cannot be found or is not a directory.
  
Example #1 RecursiveDirectoryIterator example
<?php
$directory = '/tmp';
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
$it->rewind();
while($it->valid()) {
    if (!$it->isDot()) {
        echo 'SubPathName: ' . $it->getSubPathName() . "\n";
        echo 'SubPath:     ' . $it->getSubPath() . "\n";
        echo 'Key:         ' . $it->key() . "\n\n";
    }
    $it->next();
}
?>
The above example will output something similar to:
SubPathName: fruit/apple.xml SubPath: fruit Key: /tmp/fruit/apple.xml SubPathName: stuff.xml SubPath: Key: /tmp/stuff.xml SubPathName: veggies/carrot.xml SubPath: veggies Key: /tmp/veggies/carrot.xml