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

Creato 4y | 16 nov 2021, 08:20:09


Accedi per aggiungere un commento

Altri post in questo gruppo

New in Symfony 7.3: Mailer Security Improvements

The Symfony Mailer component provides many security-related features like signing and encrypting email messages. In Symfony 7.3 we're pushing those features even further to give you greater control an

9 mag 2025, 09:20:10 | Symfony
SymfonyOnline June 2025: Detect Hidden Defects: Check Your PHP Tests

SymfonyOnline June 2025 is almost here, starting in almost 2 months on:

June 10-11: Workshop days. It is possible to attend 1 two-day training or 2 one-day trainings. June 12-13: Online confe

8 mag 2025, 14:40:19 | Symfony
New in Symfony 7.3: JsonPath Component

Contributed by Alexandre Daubois in

8 mag 2025, 10:10:10 | Symfony
SymfonyOnline June 2025: Combining Turbo, LiveComponent & Stimulus... the Right Way?

SymfonyOnline June 2025 is almost here, starting in almost 2 months on:

June 10-11: Workshop days. It is possible to attend 1 two-day training or 2 one-day trainings. June 12-13: Online confe

7 mag 2025, 13:10:15 | Symfony
New in Symfony 7.3: New and Improved Console Helpers

Symfony 7.3 introduces powerful improvements to the Console component, beyond the much-anticipated invokable commands and input attributes. This version also brings new helpers and features designed t

7 mag 2025, 08:30:04 | Symfony
New in Symfony 7.3: Static Error Pages

Contributed by Loick Piera in

6 mag 2025, 09:20:10 | Symfony
New in Symfony 7.3: Simpler Server Event Streaming

Contributed by Yonel Ceruto in

5 mag 2025, 07:50:03 | Symfony