PHP 8.5.0 Alpha 1 available for testing

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

El resultado del ejemplo sería algo 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
3
info at ensostudio dot ru
4 years ago
Fix problem with braces in template:
<?php
class 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:
<?php
stream_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();
}
?>
up
2
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
?>
To Top