protected static function Glob::fallbackGlob in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/zendframework/zend-stdlib/src/Glob.php \Zend\Stdlib\Glob::fallbackGlob()
Expand braces manually, then use the system glob.
Parameters
string $pattern:
int $flags:
Return value
array
Throws
Exception\RuntimeException
1 call to Glob::fallbackGlob()
- Glob::glob in vendor/
zendframework/ zend-stdlib/ src/ Glob.php - Find pathnames matching a pattern.
File
- vendor/
zendframework/ zend-stdlib/ src/ Glob.php, line 97
Class
- Glob
- Wrapper for glob with fallback if GLOB_BRACE is not available.
Namespace
Zend\StdlibCode
protected static function fallbackGlob($pattern, $flags) {
if (!$flags & self::GLOB_BRACE) {
return static::systemGlob($pattern, $flags);
}
$flags &= ~self::GLOB_BRACE;
$length = strlen($pattern);
$paths = [];
if ($flags & self::GLOB_NOESCAPE) {
$begin = strpos($pattern, '{');
}
else {
$begin = 0;
while (true) {
if ($begin === $length) {
$begin = false;
break;
}
elseif ($pattern[$begin] === '\\' && $begin + 1 < $length) {
$begin++;
}
elseif ($pattern[$begin] === '{') {
break;
}
$begin++;
}
}
if ($begin === false) {
return static::systemGlob($pattern, $flags);
}
$next = static::nextBraceSub($pattern, $begin + 1, $flags);
if ($next === null) {
return static::systemGlob($pattern, $flags);
}
$rest = $next;
while ($pattern[$rest] !== '}') {
$rest = static::nextBraceSub($pattern, $rest + 1, $flags);
if ($rest === null) {
return static::systemGlob($pattern, $flags);
}
}
$p = $begin + 1;
while (true) {
$subPattern = substr($pattern, 0, $begin) . substr($pattern, $p, $next - $p) . substr($pattern, $rest + 1);
$result = static::fallbackGlob($subPattern, $flags | self::GLOB_BRACE);
if ($result) {
$paths = array_merge($paths, $result);
}
if ($pattern[$next] === '}') {
break;
}
$p = $next + 1;
$next = static::nextBraceSub($pattern, $p, $flags);
}
return array_unique($paths);
}