neunerlei/path-util

该包已被放弃,不再维护。作者建议使用 neunerlei/filesystem 包。

FORKED:一个健壮的跨平台工具,用于标准化、比较和修改文件路径,具有扩展功能。

2.4.0 2020-03-02 18:04 UTC

This package is auto-updated.

Last update: 2022-09-08 10:06:50 UTC


README

为了遵循 webmozart/path-util 的方法,我将路径功能合并到了 neunerlei/filesystem,因为我认为这个存储库已被弃用,所以建议在将来使用它。我没有将 "makeUri" 方法迁移到 filesystem 包中,因为这个方法实际上与 "filesystem" 操作没有太大关系。因此,您需要自己通过直接使用 Leage/Uri 组件来创建替代方案。

文件路径工具 (FORKED)

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

注意:这是由 webmozart 提供的 path-util 的一个分支!

PHP >= 7.3.0

有什么不同?

  • 移除了 "Url" 实用工具,并替换为 PHP League 的 URI
  • 向 Path 类添加了新方法
  • 为新方法添加了测试
  • 将 PHP 依赖更新到 7.3.0
  • 更新现有代码以使用 PHP 类型提示
  • 更新测试以与修改后的代码兼容(主要是为了支持类型提示)
  • 移除了对 "webmozart/assert" 的依赖
  • Path 类不再是一个 "final" 类
  • Path 类的所有私有方法现在是 "protected"
  • 移除了构建相关文件

安装

可以使用 Composer 安装此实用工具。

$ composer require neunerlei/path-util

基本用法

使用 Path 类处理文件路径

use Neunerlei\PathUtil\Path;

// These methods are added by this fork
// ==========================================================
echo Path::unifySlashes("\\foo/bar\\baz");
// => /foo/bar/baz (on linux) or \foo\bar\baz (on windows)

echo Path::unifyPath("\\foo/bar\\baz");
// => /foo/bar/baz/ (on linux) or \foo\bar\baz\ (on windows)

echo Path::classBasename(\Neunerlei\PathUtil\Path::class);
// => Path

echo Path::classNamespace(\Neunerlei\PathUtil\Path::class);
// => Neunerlei\PathUtil

$link = Path::makeUri();
// => Returns a new Uri object -> See "URI" Section for details.

// Those methods were already in the base implementation
// ==========================================================
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

URI 处理

当使用 Path::makeLink() 方法时,您可以提供一个单参数,该参数将用作生成链接对象的基数。可能的参数选项包括

  • string:由字符串表示的 URL
  • instance:实现 \League\Uri\Contracts\UriInterface 或 Psr\Http\Message\UriInterface 的对象
  • TRUE:让脚本根据当前 $_SERVER 超全局变量确定 URL
  • array:由 parse_url() 或类似结构构建的数组的结果

如果没有提供参数,则返回一个空的 Uri 对象。该方法使用底层的 League\Uri 包。该方法的结果是 PSR-7 兼容的 URI 对象的实例。

基础包文档

文档 中了解更多关于分支基础包的信息。

作者

贡献

我们总是欢迎贡献!

许可证

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

特别感谢

特别感谢 LABOR.digital(这是德语中的实验室,不是英语中的“工作”:D)的人,是他们使我的代码能够在线发布。

明信片软件

您可以使用这个软件包,但如果它进入了您的生产环境,我将非常感激您从您的家乡寄给我一张明信片,并注明您正在使用我们哪个软件包。

您可以在 这里 找到我的地址。

谢谢:D