GlobIterator::__construct

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

GlobIterator::__constructConstruct a directory using glob

Description

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

Constructs a new directory iterator from a glob expression.

Parameters

pattern

A glob() pattern.

flags

Option flags, the flags may be a bitmask of the FilesystemIterator constants.

Errors/Exceptions

Throws an UnexpectedValueException if the directory does not exist.

Throws a ValueError if the directory is an empty string.

Changelog

Version Description
8.0.0 Now throws a ValueError if directory is an empty string; previously it threw a RuntimeException.

Examples

Example #1 GlobIterator example

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

if (!
$iterator->count()) {
echo
'No matches';
} else {
$n = 0;

printf("Matched %d item(s)\r\n", $iterator->count());

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

The above example will output something similar to:

Matched 2 item(s)
[1] php5ts.dll
[2] php_gd2.dll

See Also

add a note

User Contributed Notes 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