# RecursiveDirectoryIterator::__construct

(PHP 5 >= 5.1.2, PHP 7)

RecursiveDirectoryIterator::__construct — Constructs a RecursiveDirectoryIterator

### Description

public RecursiveDirectoryIterator::__construct ( string `$path` [, int `$flags` = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO ] )

Constructs a RecursiveDirectoryIterator() for the provided `path`.

### Parameters

`path`

  The path of the directory to be iterated over.

`flags`

  Flags 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().

### Return Values

Returns the newly created RecursiveDirectoryIterator.

### Errors/Exceptions

Throws an UnexpectedValueException if the `path` cannot be found or is not a directory.

### Examples

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

### See Also

- FilesystemIterator::__construct() - Constructs a new filesystem iterator
- RecursiveIteratorIterator::__construct() - Construct a RecursiveIteratorIterator
- FilesystemIterator predefined constants