PHP Conference Fukuoka 2025

GlobIterator::__construct

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

GlobIterator::__constructConstruye un iterador de tipo glob

Descripción

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

Construye un iterador de tipo glob.

Parámetros

pattern

Un patrón glob().

flags

Las opciones, que pueden ser un campo de bits de constantes de clase FilesystemIterator.

Errores/Excepciones

Se lanza una excepción UnexpectedValueException si el directorio no existe.

Se lanza una excepción ValueError si directory es una cadena vacía.

Historial de cambios

Versión Descripción
8.0.0 Ahora se lanza una excepción ValueError cuando directory es una cadena vacía; Anteriormente, se lanzaba una RuntimeException.

Ejemplos

Ejemplo #1 Ejemplo con GlobIterator

<?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());
}
}
?>

Resultado del ejemplo anterior es similar a :

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

Ver también

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