PHP 7.4.25 Released!

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.

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 add a note

User Contributed Notes 2 notes

up
1
ozana at omdesign dot cz
7 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
1 year 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();
}
?>
To Top