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

Метод getIterator класса Finder

Метод getIterator класса Finder возвращает объект, реализующий интерфейс \Iterator, для последовательного обхода результатов поиска. Класс Finder сам реализует интерфейс \IteratorAggregate, поэтому данный метод вызывается автоматически при использовании foreach. Параметров метод не принимает.

Синтаксис

public function getIterator(): \Iterator

Пример

Давайте создадим объект Finder, найдём все файлы в директории src и обойдём их через foreach. Метод getIterator будет вызван неявно:

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

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

FinderController.php

Пример

Давайте получим итератор явно с помощью метода getIterator и проверим, является ли он экземпляром класса ArrayIterator:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Finder\Finder; class FinderController extends AbstractController { public function index(): Response { $finder = new Finder(); $finder->files()->in('src'); $iterator = $finder->getIterator(); if ($iterator instanceof \ArrayIterator) { return new Response('iterator is ArrayIterator'); } return new Response('iterator is not ArrayIterator'); } } ?>

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

"iterator is ArrayIterator"

Пример

Давайте найдём все директории внутри src, получим итератор и выведем количество элементов через метод count:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Finder\Finder; class FinderController extends AbstractController { public function index(): Response { $finder = new Finder(); $finder->directories()->in('src'); $iterator = $finder->getIterator(); $res = iterator_count($iterator); return new Response((string) $res); } } ?>

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

"2"

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

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