neunerlei / path-util
2.4.0
2020-03-02 18:04 UTC
Requires
- php: ^7.3
- league/uri: ^6.0
Requires (Dev)
- phpunit/phpunit: ^4.6
- sebastian/version: ^1.0.1
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