PHP 8.1.0 Released!

RecursiveDirectoryIterator::__construct

(PHP 5 >= 5.1.2, PHP 7, PHP 8)

RecursiveDirectoryIterator::__constructКонструктор класса RecursiveDirectoryIterator

Описание

public RecursiveDirectoryIterator::__construct(string $directory, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO)

Создаёт новый объект класса RecursiveDirectoryIterator(), используя заданный путь directory.

Список параметров

directory

Путь к директории, по которой будет осуществляться навигация.

flags

Можно установить несколько флагов от которых будет зависеть поведение некоторых методов. Список возможных флагов можно найти на странице Предопределённых констант класса FilesystemIterator. Флаги можно задать позднее методом FilesystemIterator::setFlags().

Возвращаемые значения

Возвращает новый объект-итератор класса RecursiveDirectoryIterator.

Ошибки

Выбрасывает исключение UnexpectedValueException, если переданный путь directory не удалось найти или он не является директорией.

Примеры

Пример #1 Пример использования RecursiveDirectoryIterator

<?php

$directory 
'/tmp';

$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

$it->rewind();
while(
$it->valid()) {

    if (!
$it->isDot()) {
        echo 
'Имя файла: ' $it->getSubPathName() . "\n";
        echo 
'Поддиректория: ' $it->getSubPath() . "\n";
        echo 
'Ключ: ' $it->key() . "\n\n";
    }

    
$it->next();
}

?>

Результатом выполнения данного примера будет что-то подобное:

Имя файла: fruit/apple.xml
Поддиректория: fruit
Ключ: /tmp/fruit/apple.xml

Имя файла: stuff.xml
Поддиректория:
Ключ: /tmp/stuff.xml

Имя файла: veggies/carrot.xml
Поддиректория: veggies
Ключ: /tmp/veggies/carrot.xml

Смотрите также

add a note add a note

User Contributed Notes 2 notes

up
2
pedro dot matamouros at gmail dot com
11 years ago
You can use RecursiveDirectoryIterator::FOLLOW_SYMLINKS as a flag to the constructor to have RecursiveDirectoryIterator follow symlinks, which it does not do by default.

[EDIT BY danbrown AT php DOT net on 16-JUL-2012: Contains a typofix provided by (lightrekky AT gmail DOT com) in note #109280 on 02-JUL-2012.]
up
2
hanskrentel at yahoo dot de
9 years ago
The two default flags are zero (virtual) as with my PHP versions (5.3 and 5.4). Which means you can not check if those are set or not with the & bitwise operator:

<?php
// CURRENT_AS_FILEINFO (0)
// KEY_AS_PATHNAME (0)

### always FALSE ###
$directoryIterator->getFlags() & RecursiveDirectoryIterator::CURRENT_AS_FILEINFO;

?>

But this also allows that you can use other flags right ahead without repeating the default ones:

<?php
new RecursiveDirectoryIterator(
   
'.',
   
FilesystemIterator::UNIX_PATHS
);
?>

There is no need to repeat the default flags. Please note that this is different to FilesystemIterator which has as well the SKIP_DOTS flag as default which is non-zero:

<?php
new RecursiveDirectoryIterator(
   
'.',
   
FilesystemIterator::SKIP_DOTS
       
| FilesystemIterator::UNIX_PATHS
);
?>
To Top