The GlobIterator class

(PHP 5 >= 5.3.0, PHP 7)

Wstęp

Iterates through a file system in a similar fashion to glob().

Krótki opis klasy

GlobIterator extends FilesystemIterator implements SeekableIterator , Countable {
/* Stałe dziedziczone */
const integer FilesystemIterator::KEY_MODE_MASK = 3840 ;
const integer FilesystemIterator::SKIP_DOTS = 4096 ;
const integer FilesystemIterator::UNIX_PATHS = 8192 ;
/* Metody */
public __construct ( string $pattern [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO ] )
public count ( void ) : int
/* Metody dziedziczone */
public FilesystemIterator::__construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ] )
public FilesystemIterator::getFlags ( void ) : int
public FilesystemIterator::key ( void ) : string
public FilesystemIterator::next ( void ) : void
public FilesystemIterator::rewind ( void ) : void
public FilesystemIterator::setFlags ([ int $flags ] ) : void
}

Spis treści

add a note add a note

User Contributed Notes 2 notes

up
1
info at ensostudio dot ru
3 years ago
NOTE: "similar fashion to glob()" GlobIterator use  stream wrapper "glob://" = use glob()
up
0
info at ensostudio dot ru
3 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();
}
?>
To Top