Метод sortByName
Метод sortByName класса Finder
сортирует результаты поиска по имени файла или
директории в алфавитном порядке. Метод не
принимает параметров и возвращает тот же объект
Finder, что позволяет строить цепочки
вызовов. По умолчанию сортировка выполняется
в порядке возрастания (от 'a' к 'z').
Метод полезен, когда нужно получить стабильный, предсказуемый порядок обхода файлов, например при выводе списка статей, галерей или любых других наборов, зависящих от имён файлов.
Синтаксис
$finder->sortByName();
Пример
Давайте найдём все файлы в директории 'articles'
и отсортируем их по имени:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Finder\Finder;
class ArticleController extends AbstractController
{
public function index(): Response
{
$finder = new Finder();
$finder->files()->in('articles')->sortByName();
$res = [];
foreach ($finder as $file) {
$res[] = $file->getFilename();
}
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
"abcde.txt, article.txt, hello.txt, user.txt"
Пример
Давайте найдём директории и также отсортируем их по имени:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Finder\Finder;
class ArticleController extends AbstractController
{
public function index(): Response
{
$finder = new Finder();
$finder->directories()->in('articles')->sortByName();
$res = [];
foreach ($finder as $dir) {
$res[] = $dir->getFilename();
}
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
"abcde, article, user"
Пример
Метод sortByName возвращает сам объект
Finder, поэтому его удобно объединять
с другими методами, например с name:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Finder\Finder;
class ArticleController extends AbstractController
{
public function index(): Response
{
$finder = new Finder();
$finder
->files()
->in('articles')
->name('*.txt')
->sortByName();
$res = [];
foreach ($finder as $file) {
$res[] = $file->getFilename();
}
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
"abcde.txt, article.txt, hello.txt"
Смотрите также
-
класс
Finder,
который выполняет поиск файлов и директорий -
метод
sortByModifiedTime,
который сортирует файлы по времени изменения -
метод
name,
который фильтрует файлы по имени -
метод
files,
который ограничивает поиск только файлами