Symfony News

New in Symfony 6.2: Finder Improvements

The Finder component provides utilities to find files/directories via multiple filter and sort methods. In Symfony 6.2 we're adding new sorting methods to it.

Robert Fischer

Contributed by
Robert Fischer
in #46591.

The Finder component already includes methods to filter files/directories by file extension and or/size, but you couldn't sort results based on them. In Symfony 6.2 we've added new methods to sort by file extension and/or size:

use Symfony\Component\Finder\Finder;

$finder = (new Finder())
    ->in(__DIR__)
    // ...
    ->sortByExtension()
    ->sortBySize();
Hubert Moreau

Contributed by
Hubert Moreau
in #46126.

In Symfony 6.2 we've also added a new method to sort files/directories by their names in a case-insensitive way. Internally, it uses the strcasecmp() PHP function to perform the sorting:

$finder = (new Finder())
    ->in(__DIR__)
    // ...

    // this sorts results case-insensitive and using the "machine sorting" algorithm
    // e.g. "file1.txt", "File10.txt", "File2.txt", "file3.txt"
    ->sortByCaseInsensitiveName()

    // this sorts results case-insensitive and using the "natural sorting" algorithm
    // e.g. "file1.txt", "File2.txt", "file3.txt", "File10.txt"
    ->sortByCaseInsensitiveName(true);

Because of their own nature, all these new methods need to retrieve all results before sorting them, so they can impact performance.


Sponsor the Symfony project.


About us

What a Symfony developer should know about the framework: News, Jobs, Tweets, Events, Videos,...

Resources

Find us on Twitter

Find us on Facebook