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.
Connectez-vous pour ajouter un commentaire
Autres messages de ce groupe

Today we are happy to announce a new Symfony initiative called Symfony AI - with the goal to provide a comprehensive set of components and bundles designed to bring powerful AI capabilities directly i

SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on:
November 25 & 26: 2 workshops days with several topics to learn, practice and improve your skills

This week, development on the upcoming Symfony 8.0 version continued with the removal of deprecated features and the marking of several classes as final. In addition, we published two new case studies

At Wide, Micropole’s digital agency, they help leading brands modernize their digital infrastructures while ensuring scalability, security, and performance. When Audi France approached them to migrate

Vente-unique.com, a leading European online retailer of furniture and home decor, operates in 11 countries, powered by a team of 400 professionals and serving more than 3 million customers. From 15 ye

This week, Symfony 6.4.23, 7.2.8 and 7.3.1 maintenance versions were released. Meanwhile, the upcoming Symfony 7.4 version continued adding new features such as better controller helpers, more precisi

Symfony 6.4.23 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in you