a4blue/path-util

这是一个健壮的跨平台工具,用于标准化、比较和修改文件路径。

1.0.0 2021-12-08 19:18 UTC

This package is auto-updated.

Last update: 2024-09-09 01:21:46 UTC


README

CI Pipeline

文件路径工具

PHP ^7.3|~8.0|~8.1

此包提供了健壮的跨平台实用函数,用于标准化、比较和修改文件路径和URL。

动机

有些库仍然使用已弃用的原始代码,但不想切换到symfony/filesystem。为了最大限度地减少将这些项目的代码变体复制到这些项目中,我尝试进行硬分支并维护该项目,以便这些项目可以潜在地使用这个库

版本1旨在作为webmozart/file-path的替代品

用法

使用Path类来处理文件路径

use A4blue\PathUtil\Path;

echo Path::canonicalize('/var/www/vhost/webmozart/../config.ini');
// => /var/www/vhost/config.ini

echo Path::canonicalize('C:\Programs\Webmozart\..\config.ini');
// => C:/Programs/config.ini

echo Path::canonicalize('~/config.ini');
// => /home/webmozart/config.ini

echo Path::makeAbsolute('config/config.yml', '/var/www/project');
// => /var/www/project/config/config.yml

echo Path::makeRelative('/var/www/project/config/config.yml', '/var/www/project/uploads');
// => ../config/config.yml

$paths = array(
    '/var/www/vhosts/project/httpdocs/config/config.yml',
    '/var/www/vhosts/project/httpdocs/images/banana.gif',
    '/var/www/vhosts/project/httpdocs/uploads/../images/nicer-banana.gif',
);

Path::getLongestCommonBasePath($paths);
// => /var/www/vhosts/project/httpdocs

Path::getFilename('/views/index.html.twig');
// => index.html.twig

Path::getFilenameWithoutExtension('/views/index.html.twig');
// => index.html

Path::getFilenameWithoutExtension('/views/index.html.twig', 'html.twig');
Path::getFilenameWithoutExtension('/views/index.html.twig', '.html.twig');
// => index

Path::getExtension('/views/index.html.twig');
// => twig

Path::hasExtension('/views/index.html.twig');
// => true

Path::hasExtension('/views/index.html.twig', 'twig');
// => true

Path::hasExtension('/images/profile.jpg', array('jpg', 'png', 'gif'));
// => true

Path::changeExtension('/images/profile.jpeg', 'jpg');
// => /images/profile.jpg

Path::join('phar://C:/Documents', 'projects/my-project.phar', 'composer.json');
// => phar://C:/Documents/projects/my-project.phar/composer.json

Path::getHomeDirectory();
// => /home/webmozart

使用Url类来处理URL

use A4blue\PathUtil\Url;

echo Url::makeRelative('http://example.com/css/style.css', 'http://example.com/puli');
// => ../css/style.css

echo Url::makeRelative('http://cdn.example.com/css/style.css', 'http://example.com/puli');
// => http://cdn.example.com/css/style.css

作者

  • [Bernhard Schussek] 也称 @webmozart 原始作者
  • [Alexander Ratajczak] 也称 @a4blue

贡献

总是欢迎贡献!

许可证

本包的所有内容均受MIT许可证的许可。