Skip to content

Commit 9bf89dc

Browse files
authored
allow passing custom "depth" to files() and directories() (#57573)
this change serves 2 purposes: - it allows the calling code to pass in an optional custom depth for more control over the desired output. - it allows refactoring and deduplication of the `allFiles()` and `allDirectories()` methods to defer to the `files()` and `directories()` methods, respectively.
1 parent e125c64 commit 9bf89dc

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

src/Illuminate/Filesystem/Filesystem.php

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -582,10 +582,10 @@ public function glob($pattern, $flags = 0)
582582
* @param bool $hidden
583583
* @return \Symfony\Component\Finder\SplFileInfo[]
584584
*/
585-
public function files($directory, $hidden = false)
585+
public function files($directory, $hidden = false, string|int|array $depth = 0)
586586
{
587587
return iterator_to_array(
588-
Finder::create()->files()->ignoreDotFiles(! $hidden)->in($directory)->depth(0)->sortByName(),
588+
Finder::create()->files()->ignoreDotFiles(! $hidden)->in($directory)->depth($depth)->sortByName(),
589589
false
590590
);
591591
}
@@ -599,10 +599,7 @@ public function files($directory, $hidden = false)
599599
*/
600600
public function allFiles($directory, $hidden = false)
601601
{
602-
return iterator_to_array(
603-
Finder::create()->files()->ignoreDotFiles(! $hidden)->in($directory)->sortByName(),
604-
false
605-
);
602+
return $this->files($directory, $hidden, []);
606603
}
607604

608605
/**
@@ -611,11 +608,11 @@ public function allFiles($directory, $hidden = false)
611608
* @param string $directory
612609
* @return array
613610
*/
614-
public function directories($directory)
611+
public function directories($directory, string|int|array $depth = 0)
615612
{
616613
$directories = [];
617614

618-
foreach (Finder::create()->in($directory)->directories()->depth(0)->sortByName() as $dir) {
615+
foreach (Finder::create()->in($directory)->directories()->depth($depth)->sortByName() as $dir) {
619616
$directories[] = $dir->getPathname();
620617
}
621618

@@ -629,13 +626,7 @@ public function directories($directory)
629626
*/
630627
public function allDirectories(string $directory): array
631628
{
632-
$directories = [];
633-
634-
foreach (Finder::create()->in($directory)->directories()->sortByName() as $dir) {
635-
$directories[] = $dir->getPathname();
636-
}
637-
638-
return $directories;
629+
return $this->directories($directory, []);
639630
}
640631

641632
/**

0 commit comments

Comments
 (0)