一个允许您以规范方式处理路径的包

0.1.0 2023-12-30 16:14 UTC

This package is auto-updated.

Last update: 2024-08-30 01:26:48 UTC


README

Latest Version on Packagist PHP Version GitHub Workflow Status Buy The World a Tree Contributor Covenant

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.X0.X.yX.y.z。当此库更改为版本 1.0.0、2.0.0 等时,并不表示它是一个值得注意的版本,它只是表示更改是破坏性的。

树库

此包是 Treeware。如果您在生产环境中使用它,那么我们要求您为世界买一棵树以感谢我们的工作。通过为 Treeware 森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。

贡献

请参阅 CONTRIBUTING 了解详细信息。

行为准则

请参阅 CODE_OF_CONDUCT 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 tim@code-distortion.net 而不是使用问题跟踪器。

致谢

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件