code-distortion / path
一个允许您以规范方式处理路径的包
Requires
- php: 8.0.* | 8.1.* | 8.2.* | 8.3.*
Requires (Dev)
- infection/infection: ^0.10 | ^0.11 | ^0.12 | ^0.13 | ^0.14 | ^0.15 | ^0.16 | ^0.17 | ^0.18 | ^0.19 | ^0.20 | ^0.21 | ^0.22 | ^0.23 | ^0.24 | ^0.25 | ^0.26 | ^0.27
- phpstan/phpstan: ^0.9 | ^0.10 | ^0.11 | ^0.12 | ^1.0
- phpunit/phpunit: ~4.8 | ^5.0 | ^6.0 | ^7.0 | ^8.4 | ^9.0 | ^10.0
- squizlabs/php_codesniffer: ^3.8.0
README
code-distortion/path 是一个允许您以规范方式处理路径的包。
安装
通过 composer 安装此包
composer require code-distortion/path
使用方法
Use CodeDistortion\Path\Path; $path = Path::new('/path/to/file.txt'); (string) $path; // '/path/to/file.txt' (castable to a string) $path->getDir(); // '/path/to/' (the dir as a new Path object) $path->getFilename(); // 'file.txt' $path->getFilename(false); // 'file' $path->getExtension(); // '.txt' $path->getExtension(false); // 'txt' $path->isAbsolute(); // true $path->isRelative(); // false
注意: 此包旨在与 内存 中的路径字符串一起使用。
它 不会以任何方式处理实际的目录或文件。它不关心文件系统中的内容。
注意: 此包认为目录路径以反斜杠结尾,而文件路径则不以此结尾。
如果您想确保您正在处理的输入明确为目录或文件,可以在创建对象时指定此信息。
// dir paths Path::new('/path/to/thing/'); // '/path/to/thing/' Path::newDir('/path/to/thing'); // '/path/to/thing/' (enforces that it's a dir) // file paths Path::new('/path/to/thing'); // '/path/to/thing' Path::newFile('/path/to/thing/'); // '/path/to/thing' (enforces that it's a file)
您可以从路径中删除不必要的部分。
Path::new('/a//b/.././c')->resolve(); // '/a/c' - removes unnecessary parts
您可以使用一个作为基础将路径组合在一起。
Path::newDir('/path/to/uploads/')->add('my-file.txt'); // '/path/to/uploads/my-file.txt' // make sure that your file doesn't break out from the base Path::newDir('/path/to/uploads/')->add('../my-file.txt'); // '/path/to/uploads/my-file.txt' // or allow it to break out Path::newDir('/path/to/uploads/')->add('../my-file.txt', false); // '/path/to/my-file.txt'
Path 将在输入中规范化正斜杠和反斜杠,以您的本地 OS 格式生成输出(但输出分隔符可以重写)。
Path::newDir('\\path\\to\\file.txt'); // '/path/to/file.txt' (on a *nix OS) Path::newDir('/path/to/file.txt'); // '/path/to/file.txt' (on a *nix OS) Path::newDir('/path/to/file.txt')->separator('\\'); // '\path\to\file.txt'
您可以克隆一个 Path 对象。
$pathA = Path::new('/path/to/file.txt'); $pathB = $pathA->copy(); $pathB !== $pathA; // true
还可用 PathImmutable
类。对每个 PathImmutable
对象的更改都会返回一个新的实例。`Path` 和 `PathImmutable` 都实现了 `CodeDistortion\Path\PathInterface`。
$pathA = PathImmutable::newDir('/path/to/'); $pathB = $pathA->add('file.txt'); $pathA !== $pathB; // true
测试此包
- 克隆此包:
git clone https://github.com/code-distortion/path.git .
- 运行
composer install
以安装依赖项 - 运行测试:
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
SemVer
此库使用 SemVer 2.0.0 版本控制。这意味着对 X
的更改表示破坏性更改:0.0.X
,0.X.y
,X.y.z
。当此库更改为版本 1.0.0、2.0.0 等时,并不表示它是一个值得注意的版本,它只是表示更改是破坏性的。
树库
此包是 Treeware。如果您在生产环境中使用它,那么我们要求您为世界买一棵树以感谢我们的工作。通过为 Treeware 森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。
贡献
请参阅 CONTRIBUTING 了解详细信息。
行为准则
请参阅 CODE_OF_CONDUCT 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 tim@code-distortion.net 而不是使用问题跟踪器。
致谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。