Метод exclude класса Finder
Метод exclude класса Finder исключает
указанные пути из результатов поиска. Первым параметром
передаётся путь или массив путей, которые нужно исключить.
Пути задаются относительно директорий, добавленных через
метод in. Метод возвращает объект Finder,
что позволяет строить цепочки вызовов.
Синтаксис
$finder->exclude(string|array $dirs)
Пример
Давайте найдём все файлы в директории src,
исключив из результатов поддиректорию Controller:
<?php
namespace AppService;
use SymfonyComponentFinderFinder;
class FinderService
{
public function findFiles(): array
{
$finder = new Finder();
$finder->files()->in('src')->exclude('Controller');
$res = [];
foreach ($finder as $file) {
$res[] = $file->getRelativePathname();
}
return $res;
}
}
?>
Результат выполнения кода:
["Service/FinderService.php", "Entity/Article.php"]
Пример
Давайте исключим сразу несколько директорий, передав их массивом:
<?php
namespace AppService;
use SymfonyComponentFinderFinder;
class FinderService
{
public function findFiles(): array
{
$finder = new Finder();
$finder
->files()
->in('src')
->exclude(['Controller', 'Entity']);
$res = [];
foreach ($finder as $file) {
$res[] = $file->getRelativePathname();
}
return $res;
}
}
?>
Результат выполнения кода:
["Service/FinderService.php"]
Пример
Давайте исключим вложенную директорию, указав путь относительно директории поиска:
<?php
namespace AppService;
use SymfonyComponentFinderFinder;
class FinderService
{
public function findFiles(): array
{
$finder = new Finder();
$finder
->files()
->in('src')
->exclude('Service/Sub');
$res = [];
foreach ($finder as $file) {
$res[] = $file->getRelativePathname();
}
return $res;
}
}
?>
Результат выполнения кода:
["Service/FinderService.php", "Service/Other.php"]