jstewmc / path
处理PHP中路径的类
v0.1.0
2014-12-23 01:38 UTC
Requires (Dev)
- phpunit/phpunit: 4.2.*
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'
段
路径由段组成。每个段代表路径中的一步。例如,路径 foo/bar/baz
有三个段:foo
、bar
和 baz
。
段从0开始索引。因此,在路径 foo/bar/baz
中,foo
的索引是 0。 bar
的索引是 1,baz
的索引是 2。
大多数使用段索引作为参数的方法都将接受一个偏移量。偏移量可以是正数(从路径的开始位置算起那么多位置)或负数(从路径的末尾算起那么多位置)。例如,偏移量为 1
是路径中的第二个段,偏移量为 -1
是路径中的最后一个段。此外,大多数方法接受特殊字符串 first
和 last
。
你可以追加、预置、插入、设置和取消设置路径的段
$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%的代码。我并不是完全确定有什么遗漏,因为我几乎为所有内容都写了测试。如果你看到什么遗漏,请告诉我。
贡献
请随意贡献你自己的改进
- 分支
- 克隆
- PHPUnit
- 分支
- PHPUnit
- 代码
- PHPUnit
- 提交
- 推送
- 拉取请求
- 放松并吃一个原始主义松饼
有关详细信息,请参阅CONTRIBUTING.md。
作者
Jack Clayton - clayjs0@gmail.com。
许可协议
Url采用MIT许可协议发布。有关详细信息,请参阅LICENSE文件。
历史
你可以在CHANGELOG.md文件中查看Url项目的(简短)历史。