jstewmc/path

处理PHP中路径的类

v0.1.0 2014-12-23 01:38 UTC

This package is auto-updated.

Last update: 2024-08-29 04:13:15 UTC


README

处理PHP中字符串路径的类。

路径是穿过层次结构的一条路线,例如,文件系统中的一个文件夹或部门树中的一个分类。

$path = new Path('foo/bar/baz');

$path->getSegment('first');  // returns 'foo'
$path->getSegment(1);        // returns 'bar'

$path-appendSegment('qux');     // path becomes 'foo/bar/baz/qux'
$path->prependSegment('quux');  // path becomes 'quux/foo/bar/baz/qux'

echo $path;  // prints 'quux/foo/bar/baz/qux'

请随意查看API文档报告问题贡献提问

路径由段组成。每个段代表路径中的一步。例如,路径 foo/bar/baz 有三个段:foobarbaz

段从0开始索引。因此,在路径 foo/bar/baz 中,foo 的索引是 0。 bar 的索引是 1,baz 的索引是 2。

大多数使用段索引作为参数的方法都将接受一个偏移量。偏移量可以是正数(从路径的开始位置算起那么多位置)或负数(从路径的末尾算起那么多位置)。例如,偏移量为 1 是路径中的第二个段,偏移量为 -1 是路径中的最后一个段。此外,大多数方法接受特殊字符串 firstlast

你可以追加、预置、插入、设置和取消设置路径的段

$path = new Path();

$path->appendSegment('foo');     // path becomes "foo"
$path->prependSegment('bar');    // path becomes "bar/foo"
$path->insertSegment(1, 'baz');  // path becomes "bar/baz/foo"
$path->setSegment(-1, 'qux');    // path becomes "bar/baz/qux"
$path->unsetSegment('last');     // path becomes "bar/baz"

echo $path;  // prints "bar/baz"

上面的例子使用了单独的方法调用。然而,你可以链式调用大多数方法

$path = new Path();

$path->appendSegment('foo')->prependSegment('bar')->insertSegment(1, 'baz');

echo $path;  // prints "bar/baz/foo"

当路径用作字符串时,它将返回路径作为字符串,这不足为奇

$path = new Path('foo/bar/baz');

(string) $path;  // returns "foo/bar/baz"
echo $path;      // returns "foo/bar/baz"
$path .'';       // returns "foo/bar/baz"

你可以通过值或偏移量获取、查找和验证段

$path = new Path('foo/bar/baz');

// get the index of the 'foo' segment
$path->getIndex('foo');  // returns 0
$path->getIndex('qux');  // returns false ('qux' does not exist)

// get the value of the 0-th (aka, 'first') segment
$path->getSegment(0);        // returns 'foo'
$path->getSegment('first');  // returns 'foo'
$path->getSegment(999);      // throws OutOfBoundsException

// does the path have a segment at the 1-st index?
$path->hasIndex(1);    // returns true
$path->hasIndex(999);  // returns false

// does the path have the given segments (at any index)?
$path->hasSegment('bar');  // returns true
$path->hassegment('qux');  // returns false

// does the path have the given segments (at the given indices)?
$path->hasSegment('foo', 0);        // returns true
$path->hasSegment('foo', 'first');  // returns true
$path->hasSegment('foo', 1);        // returns false ('foo' is 0-th)
$path->hasSegment('qux', 'last');   // returns false ('qux' does not exist)

路径

你还可以切片和反转路径。

你可以切片和反转当前路径

$path = new Path('foo/bar/baz');

$path->slice(1);

echo $path;  // prints "bar/baz"

$path->reverse();

echo $path;  // prints "baz/bar"

或者,你可以切片和反转一个克隆

$a = new Path('foo/bar/baz');

$b = $a->getSlice(1); 

echo $a;  // prints 'foo/bar/baz'
echo $b;  // prints 'bar/baz'

$c = $a->getReverse();

echo $a;  // prints 'foo/bar/baz'
echo $c;  // prints 'baz/bar/foo'

测试

测试覆盖了超过90%的代码。我并不是完全确定有什么遗漏,因为我几乎为所有内容都写了测试。如果你看到什么遗漏,请告诉我。

贡献

请随意贡献你自己的改进

  1. 分支
  2. 克隆
  3. PHPUnit
  4. 分支
  5. PHPUnit
  6. 代码
  7. PHPUnit
  8. 提交
  9. 推送
  10. 拉取请求
  11. 放松并吃一个原始主义松饼

有关详细信息,请参阅CONTRIBUTING.md

作者

Jack Clayton - clayjs0@gmail.com

许可协议

Url采用MIT许可协议发布。有关详细信息,请参阅LICENSE文件。

历史

你可以在CHANGELOG.md文件中查看Url项目的(简短)历史。