RecursiveDirectoryIterator::__construct
(PHP 5 >= 5.1.2)
RecursiveDirectoryIterator::__construct — Конструктор класса RecursiveDirectoryIterator
Описание
$path
[, int $flags
= FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO
] )
Создает новый объект класса RecursiveDirectoryIterator(),
используя заданный путь path
.
Список параметров
-
path
-
Путь к директории, по которой будет осуществляться навигация.
-
flags
-
Можно установить несколько флагов, от которых будет зависеть поведение некоторых методов. Список возможных флагов можно найти на странице Предопределенных констант класса FilesystemIterator. Эти флаги можно задать позднее методом FilesystemIterator::setFlags().
Возвращаемые значения
Возвращает новый объект-итератор класса RecursiveDirectoryIterator.
Ошибки
Выбрасывает исключение UnexpectedValueException, если
переданный путь path
не удалось найти или он не является
директорией.
Примеры
Пример #1 Пример использования RecursiveDirectoryIterator
<?php
$directory = '/tmp';
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
while($it->valid()) {
if (!$it->isDot()) {
echo 'SubPathName: ' . $it->getSubPathName() . "\n";
echo 'SubPath: ' . $it->getSubPath() . "\n";
echo 'Key: ' . $it->key() . "\n\n";
}
$it->next();
}
?>
Результатом выполнения данного примера будет что-то подобное:
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
Смотрите также
- FilesystemIterator::__construct() - Создает новый итератор файловой системы
- RecursiveIteratorIterator::__construct() - Конструктор класса RecursiveIteratorIterator
- Предопределенные константы класса FilesystemIterator
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Другие базовые расширения
- Стандартная библиотека PHP (SPL)
- Итераторы
- Функция RecursiveDirectoryIterator::__construct() - Конструктор класса RecursiveDirectoryIterator
- Функция RecursiveDirectoryIterator::getChildren() - Если текущий элемент является директорией, метод возвращает для нее итератор
- Функция RecursiveDirectoryIterator::getSubPath() - Возвращает путь к поддиректории
- Функция RecursiveDirectoryIterator::getSubPathname() - Возвращает путь к поддиректории и имя файла
- Функция RecursiveDirectoryIterator::hasChildren() - Определяет, является ли текущий элемент директорией
- Функция RecursiveDirectoryIterator::key() - Возвращает путь и имя файла текущего элемента
- Функция RecursiveDirectoryIterator::next() - Переход к следующему элементу
- Функция RecursiveDirectoryIterator::rewind() - Переводит итератор на начало директории
Коментарии
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.]
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
);
?>