GlobIterator::__construct

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

GlobIterator::__construct Создаёт итератор директории, используя glob-выражение

Описание

public GlobIterator::__construct(string $pattern, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO)

Создаёт новый итератор директории на основе glob-выражения.

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

pattern

Шаблон glob().

flags

Флаги настроек. Флаги можно задавать битовой маской констант FilesystemIterator.

Ошибки

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

Выбрасывает исключение ValueError, если параметр directory содержит пустую строку.

Список изменений

Версия Описание
8.0.0 Теперь выбрасывает исключение ValueError, если параметр directory содержит пустую строку. Ранее выбрасывалось исключение RuntimeException.

Примеры

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

<?php
$iterator
= new GlobIterator('*.dll', FilesystemIterator::KEY_AS_FILENAME);

if (!
$iterator->count()) {
echo
'Нет совпадений';
} else {
$n = 0;

printf("Найдено элементов: %d \r\n", $iterator->count());

foreach (
$iterator as $item) {
printf("[%d] %s\r\n", ++$n, $iterator->key());
}
}
?>

Вывод приведённого примера будет похож на:

Найдено элементов: 2
[1] php5ts.dll
[2] php_gd2.dll

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

  • DirectoryIterator::__construct() - Создаёт новый итератор каталогов из пути
  • GlobIterator::count() - Определяет количество директорий и файлов
  • glob() - Находит файловые пути, которые совпадают с шаблоном

Добавить

Примечания пользователей 2 notes

up
1
ozana at omdesign dot cz
11 years ago
GlobIterator doesn’t have a way to support GLOB_BRACE!<?php$iterator = new GlobIterator(getcwd. '/*.{php,txt}'); // generate an empty array?>
up
0
info at ensostudio dot ru
5 years ago
Fix problem with braces in template:<?phpclass GlobStreamWrapper{    private $generator;    protected function createGenerator(array $paths): Generator    {        return yield from $paths;    }    public function dir_opendir(string $pattern, int $options = 0): bool    {        $pattern = substr($pattern, 7); // crop 'glob://' prefix        $pattern = str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $pattern);        $paths = (array) glob($pattern, GLOB_BRACE | GLOB_NOSORT);        $this->generator = $this->createGenerator($paths);        return $this->generator->valid();    }    public function dir_readdir(): string    {        $path = $this->generator->current() ?: '';        $this->generator->next();        return $path;    }    public function dir_rewinddir(): bool    {       $this->generator->rewind();        return $this->generator->valid();    }    public function dir_closedir(): bool    {        $this->generator = null;        return true;    }}?>Replace glob wrapper:<?phpstream_wrapper_unregister('glob');stream_wrapper_register('glob', 'GlobStreamWrapper');?>Example:<?php$iterator = new GlobIterator(__DIR__ . '/{application,system}/src/*.php');while ($iterator->valid()) {    echo $iterator->current()->getFilename() . '</br>';    $iterator->next();}?>
To Top