Метод depth
Метод depth класса Finder задаёт максимальную глубину вложенности директорий, до которой будет выполняться поиск файлов и папок. Первым параметром передаётся целое число - уровень вложенности. Значение 0 ограничивает поиск только текущей директорией, 1 - текущей и её непосредственными поддиректориями и так далее. Метод возвращает объект Finder, что позволяет выстраивать цепочку вызовов.
Синтаксис
$finder->depth(level);
Пример
Давайте найдём все файлы в директории 'src', ограничившись глубиной 0:
<?php
namespace AppService;
use SymfonyComponentFinderFinder;
class FinderService
{
public function findFiles(): array
{
$finder = new Finder();
$finder->files()->in('src')->depth(0);
$res = [];
foreach ($finder as $file) {
$res[] = $file->getFilename();
}
return $res;
}
}
?>
Результат выполнения кода:
["FinderService.php"]
Пример
Давайте увеличим глубину до 1, чтобы захватить файлы из вложенных директорий:
<?php
namespace AppService;
use SymfonyComponentFinderFinder;
class FinderService
{
public function findFiles(): array
{
$finder = new Finder();
$finder->files()->in('src')->depth(1);
$res = [];
foreach ($finder as $file) {
$res[] = $file->getRelativePathname();
}
return $res;
}
}
?>
Результат выполнения кода:
["FinderService.php", "Controller/ArticleController.php", "Entity/Article.php"]
Пример
Давайте найдём только директории первого уровня вложенности:
<?php
namespace AppService;
use SymfonyComponentFinderFinder;
class FinderService
{
public function findDirectories(): array
{
$finder = new Finder();
$finder->directories()->in('src')->depth(0);
$res = [];
foreach ($finder as $dir) {
$res[] = $dir->getFilename();
}
return $res;
}
}
?>
Результат выполнения кода:
["Controller", "Entity", "Service"]
Пример
Давайте используем метод depth в связке с методом name для поиска конкретных файлов:
<?php
namespace AppService;
use SymfonyComponentFinderFinder;
class FinderService
{
public function findPhpFiles(): array
{
$finder = new Finder();
$finder->files()->name('*.php')->in('src')->depth(1);
$res = [];
foreach ($finder as $file) {
$res[] = $file->getRelativePathname();
}
return $res;
}
}
?>
Результат выполнения кода:
["FinderService.php", "Controller/ArticleController.php", "Entity/Article.php"]
Смотрите также
-
класс
Finder,
который выполняет поиск файлов и директорий -
метод
files,
который ограничивает поиск только файлами -
метод
directories,
который ограничивает поиск только директориями -
метод
in,
который задаёт директорию для поиска