This commit is contained in:
2025-02-04 12:40:43 +03:00
parent 4bcb4c60dd
commit 50343d5a87
372 changed files with 9019 additions and 6684 deletions

View File

@@ -37,8 +37,6 @@ final class Factory
* @param list<non-empty-string>|string $suffixes
* @param list<non-empty-string>|string $prefixes
* @param list<non-empty-string> $exclude
*
* @phpstan-ignore missingType.generics
*/
public function getFileIterator(array|string $paths, array|string $suffixes = '', array|string $prefixes = '', array $exclude = []): AppendIterator
{
@@ -115,7 +113,7 @@ final class Factory
*
* @return list<string>
*/
private function globstar(string $pattern): array
private function globstar(string $pattern)
{
if (stripos($pattern, '**') === false) {
$files = glob($pattern, GLOB_ONLYDIR);
@@ -127,24 +125,23 @@ final class Factory
$patterns = [$rootPattern . $restPattern];
$rootPattern .= '/*';
while ($directories = glob($rootPattern, GLOB_ONLYDIR)) {
while ($dirs = glob($rootPattern, GLOB_ONLYDIR)) {
$rootPattern .= '/*';
foreach ($directories as $directory) {
$patterns[] = $directory . $restPattern;
foreach ($dirs as $dir) {
$patterns[] = $dir . $restPattern;
}
}
$files = [];
foreach ($patterns as $_pattern) {
$files = array_merge($files, $this->globstar($_pattern));
foreach ($patterns as $pat) {
$files = array_merge($files, $this->globstar($pat));
}
}
if ($files !== false) {
$files = array_unique($files);
sort($files);
return $files;

View File

@@ -9,6 +9,7 @@
*/
namespace SebastianBergmann\FileIterator;
use function assert;
use function preg_match;
use function realpath;
use function str_ends_with;
@@ -24,8 +25,8 @@ use SplFileInfo;
*/
final class Iterator extends FilterIterator
{
public const int PREFIX = 0;
public const int SUFFIX = 1;
public const PREFIX = 0;
public const SUFFIX = 1;
private false|string $basePath;
/**
@@ -55,6 +56,8 @@ final class Iterator extends FilterIterator
{
$current = $this->getInnerIterator()->current();
assert($current instanceof SplFileInfo);
$filename = $current->getFilename();
$realPath = $current->getRealPath();