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

Établi 3y | 16 nov. 2021 à 08:20:09


Connectez-vous pour ajouter un commentaire

Autres messages de ce groupe

SymfonyLive Berlin 2025: Where have the women of tech history gone?

SymfonyLive Berlin 2025, conference held in English, will take place from April 1 to 4! The schedule is being revealed gradually. More details are available here.

As we are now unveiling th

3 févr. 2025 à 14:40:15 | Symfony
A Week of Symfony #944 (27 January - 2 February 2025)

This week, Symfony released maintenance versions 6.4.18, 7.1.11 and 7.2.3. In addition, Twig published a security advisory and we shared several updates about upcoming Symfony conferences. Lastly, Sym

2 févr. 2025 à 10:50:16 | Symfony
Back on the inspiring SymfonyCon Vienna 2024!

We were absolutely thrilled to gather with the incredible Symfony community for the first time in Vienna, Austria, from December 5th to 6th, surrounded by the warm and festive atmosphere of the

31 janv. 2025 à 12:30:18 | Symfony
SymfonyLive Paris 2025 : Reveal of workshop topics!

SymfonyLive Paris 2025, conference in French language only, will take place from March 27 to 28! The schedule is currently being revealed as we go along. More details are available here.

💻

30 janv. 2025 à 08:50:03 | Symfony
Get Symfony news on your favorite social network

Symfony has been active on X, Mastodon, and Bluesky for some time, but until recently, not all platforms received equal attention. Since Twitter (now X) was our first social network, all blog posts we

29 janv. 2025 à 14:20:10 | Symfony
SymfonyLive Berlin 2025: Demystify the magic of the Container

SymfonyLive Berlin 2025, conference held in English, will take place from April 1 to 4! The schedule is being revealed gradually. More details are available here.

As we are now unveiling th

29 janv. 2025 à 14:20:10 | Symfony
Twig CVE-2025-24374: Missing output escaping for the null coalesce operator

Affected versions

Twig versions >=3.16.0,<3.19.0 are affected by this security issue.

The issue has been fixed in Twig 3.19.0.

Description

When using the null coalesce operator (??), output esc

29 janv. 2025 à 09:40:06 | Symfony