РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
711 of 1361 menu

Метод followLinks

Метод followLinks класса Finder указывает Finder'у следовать по символическим ссылкам (symlinks) в процессе обхода файловой системы. По умолчанию Finder не переходит по таким ссылкам, поэтому директории, являющиеся симлинками, игнорируются. Вызов этого метода включает их обход, позволяя находить файлы, расположенные за пределами основной директории. Метод не принимает параметров и возвращает экземпляр Finder для создания цепочки вызовов.

Синтаксис

$finder->followLinks();

Пример

Давайте создадим директорию 'data' и символическую ссылку 'data/link', указывающую на другую директорию с файлами. Сначала посмотрим результат без включения перехода по ссылкам:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Finder\Finder; use Symfony\Component\HttpFoundation\Response; class FinderController extends AbstractController { public function index(): Response { $finder = new Finder(); $finder->files()->in('data'); $res = []; foreach ($finder as $file) { $res[] = $file->getFilename(); } return new Response(implode(', ', $res)); } } ?>

Результат выполнения кода:

"abcde.txt"

Пример

Теперь включим переход по символическим ссылкам с помощью метода followLinks:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Finder\Finder; use Symfony\Component\HttpFoundation\Response; class FinderController extends AbstractController { public function index(): Response { $finder = new Finder(); $finder->files()->in('data')->followLinks(); $res = []; foreach ($finder as $file) { $res[] = $file->getFilename(); } return new Response(implode(', ', $res)); } } ?>

Результат выполнения кода:

"abcde.txt", "hello.txt"

Как видите, после вызова followLinks Finder обошёл символическую ссылку и нашёл файл 'hello.txt', расположенный в другой директории.

Пример

Метод followLinks можно комбинировать с другими методами фильтрации. Давайте найдём только файлы с расширением '.txt' среди ссылок:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Finder\Finder; use Symfony\Component\HttpFoundation\Response; class FinderController extends AbstractController { public function index(): Response { $finder = new Finder(); $finder ->files() ->name('*.txt') ->in('data') ->followLinks(); $res = []; foreach ($finder as $file) { $res[] = $file->getFilename(); } return new Response(implode(', ', $res)); } } ?>

Результат выполнения кода:

"abcde.txt", "hello.txt"

Смотрите также

  • класс Finder,
    который выполняет поиск файлов и директорий
  • метод files,
    который ограничивает поиск только файлами
  • метод in,
    который задаёт директорию для поиска
  • метод ignoreDotFiles,
    который исключает скрытые файлы из результатов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить