New in Symfony 5.4: Filesystem Path Class

Contributed by Théo FIDRY in #41954.

The Filesystem component is a small utility component that provides functions related to the filesystem which are independent of the underlying operating system. Its scope is small, but it's so convenient that it has more than 200 million downloads. In Symfony 5.4 we're improving this component by adding a new Path class. This class provides utilities to manipulate file/dir paths in a consistent manner. For example, it includes a canonicalize() method that normalizes slashes, resolves .. segments, etc.

    1

2 3 4 use Symfony\Component\Filesystem\Path;

echo Path::canonicalize('../uploads/../config/config.yaml'); // => ../config/config.yaml

PHP provides a dirname() function to get the directory path of a given file path, but it has some quirks. The Path class provides a getDirectory() method as an alternative:

    1

2 3 4 5 6 7 dirname('C:/Programs'); // returns 'C:', not 'C:/' dirname('C:/'); // returns '.', not 'C:/'

Path::getDirectory('C:/'); // returns 'C:/' Path::getDirectory('C:/Programs'); // returns 'C:/' Path::getDirectory('C:\'); // returns 'C:/' Path::getDirectory('C:\Programs'); // returns 'C:/'

This class includes many other utilities that come in handy in web applications, such as finding the longest common part of some file paths:

    1

2 3 4 5 6 7 8 9 10 $paths = [ '/var/www/vhosts/project/httpdocs/config/config.yaml', '/var/www/vhosts/project/httpdocs/config/routing.yaml', '/var/www/vhosts/project/httpdocs/config/services.yaml', '/var/www/vhosts/project/httpdocs/images/banana.gif', '/var/www/vhosts/project/httpdocs/uploads/images/nicer-banana.gif', ];

Path::getLongestCommonBasePath($paths); // return '/var/www/vhosts/project/httpdocs'

Do you want to sponsor the Symfony Filesystem component? Thanks to the new Symfony sponsoring program your company logo can be displayed next to the Filesystem component on GitHub and symfony.com. Browse Symfony support, select the "Symfony Backers" option and send us a message to get more details.

                Sponsor the Symfony project.

https://symfony.com/blog/new-in-symfony-5-4-filesystem-path-class?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

Created 4y | Nov 16, 2021, 8:20:09 AM


Login to add comment

Other posts in this group

SymfonyOnline June 2025: Speakers, Stats & Replays!

Thank you for joining us at SymfonyOnline June 2025!

What a great edition of SymfonyOnline we’ve just wrapped up! 🎉

We were thrilled to welcome 300 participants from 35 different countries—a

Jun 18, 2025, 8:50:17 AM | Symfony
A Week of Symfony #963 (June 9–15, 2025)

This week, Symfony celebrated the SymfonyOnline June 2025 conference with great success. Meanwhile, development efforts focused on improving invokable commands for the upcoming Symfony 7.4 version. Th

Jun 15, 2025, 9:10:09 AM | Symfony
A Week of Symfony #962 (June 2–8, 2025)

This week, development activity focused on the upcoming Symfony 7.4 and 8.0 versions, which will deprecate and remove many features. In addition, we published a case study about Yousign. Finally, we'r

Jun 8, 2025, 7:50:05 AM | Symfony
Case study - Yousign: Scaling Trust with Smart, Scalable Architecture

As digital signatures become the norm in modern business, Yousign has established itself as a trusted leader across Europe. Behind its simple, intuitive interface is a powerful technical engine, handl

Jun 6, 2025, 7:10:24 AM | Symfony
SymfonyOnline June 2025 starts next week!

Get ready for the exciting SymfonyOnline June 2025, kicking off in a few days only! There’s still time to register and join the international online Symfony conference—along with pre-conferenc

Jun 5, 2025, 10:20:09 AM | Symfony
A Week of Symfony #961 (May 26 – June 1, 2025)

This week, Symfony released the stable version of Symfony 7.3, which includes lots of amazing new features. We also published the maintenance versions 6.4.22 and 7.2.7.

Symfony development highlights

Jun 1, 2025, 8:50:16 AM | Symfony
New in Symfony 7.3: DX Improvements (part 2)

This is the second part of the blog post showcasing the main DX (developer experience) features introduced in Symfony 7.3. Read the first part of this blog post.

Verify URI Signatures… https://symfon

May 29, 2025, 9:10:19 AM | Symfony