GlobIterator::__construct

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

GlobIterator::__constructConstruit un itérateur de type glob

Description

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

Construit un itérateur de type glob.

Liste de paramètres

pattern

Un motif (pattern) glob().

flags

Les options, qui peuvent être un champ de bits de constantes de classe FilesystemIterator.

Erreurs / Exceptions

Lance une exception UnexpectedValueException si le répertoire n'existe pas.

Lance une exception ValueError si directory est une chaîne vide.

Historique

Version Description
8.0.0 Lance désormais une exception ValueError quand directory est une chaîne vide ; Auparavant, une RuntimeException était lancée.

Exemples

Exemple #1 Exemple avec 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());
}
}
?>

Résultat de l'exemple ci-dessus est similaire à :

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

Voir aussi

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