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();
}
?>GlobIterator::__construct
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
GlobIterator::__construct
Референца за `globiterator.construct.php` со подобрена типографија и навигација.
GlobIterator::__construct
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
GlobIterator::__construct — Конструирај директориум користејќи glob
= NULL
$pattern, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO)Конструира нов итератор на директориум од glob израз.
Параметри
pattern-
А glob() pattern.
flags-
Опции за знаменца, знаменцата може да бидат битно поле од FilesystemIterator constants.
Errors/Exceptions
Фрла UnexpectedValueException
ако directory веќе постои. На Windows, функцијата исто така откажува и издава
Фрла ValueError
ако directory е празен стринг.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
Сега фрла ValueError if
directory е празен стринг; претходно фрлаше RuntimeException.
|
Примери
Пример #1 GlobIterator example
<?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());
}
}
?>Горниот пример ќе прикаже нешто слично на:
Matched 2 item(s) [1] php5ts.dll [2] php_gd2.dll
Види Исто така
- FilesystemIterator::__construct() - Конструира нов итератор за директориум од патека
- GlobIterator::count() - Враќа активни ресурси
- glob() - Најди имиња на патеки што одговараат на шема
Белешки од корисници 2 забелешки
GlobIterator doesn’t have a way to support GLOB_BRACE!
<?php
$iterator = new GlobIterator(getcwd. '/*.{php,txt}'); // generate an empty array
?>