GlobIterator::__construct

(PHP 5 >= 5.3.0)

GlobIterator::__construct Создает итератор директории, используя glob-выражение

Описание

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

Создает новый итератор директории на основе glob-выражения.

Список параметров

path

Путь к директории.

flags

Настроечные флаги. Флаги можно задавать битовой маской констант FilesystemIterator.

Примеры

Пример #1 Пример использования GlobIterator

<?php
$iterator 
= new GlobIterator('*.dll'FilesystemIterator::KEY_AS_FILENAME);

if (!
$iterator->count()) {
    echo 
'Нет совпадений';
} else {
    
$n 0;

    
printf("Найдено элементов: %d \r\n"$iterator->count());

    foreach (
$iterator as $item) {
        
printf("[%d] %s\r\n", ++$n$iterator->key());
    }
}
?>

Результатом выполнения данного примера будет что-то подобное:

Найдено элементов: 2
[1] php5ts.dll
[2] php_gd2.dll

Смотрите также

  • DirectoryIterator::__construct() - Создаёт новый итератор директорий по пути
  • GlobIterator::count() - Определяет количество директорий и файлов
  • glob() - Находит файловые пути, совпадающие с шаблоном

Коментарии

GlobIterator doesn’t have a way to support GLOB_BRACE!

<?php
$iterator 
= new GlobIterator(getcwd'/*.{php,txt}'); // generate an empty array
?>
2014-03-29 12:08:23
http://php5.kiev.ua/manual/ru/globiterator.construct.html
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 $patternint $options 0): bool
   
{
       
$pattern substr($pattern7); // crop 'glob://' prefix
       
$pattern str_replace(['\\''/'], DIRECTORY_SEPARATOR$pattern);
       
$paths = (array) glob($patternGLOB_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();
}
?>
2020-07-28 15:30:35
http://php5.kiev.ua/manual/ru/globiterator.construct.html

    Поддержать сайт на родительском проекте КГБ