dsxack/path

此包已被弃用,不再维护。没有建议的替代包。

从nodejs移植的路径

维护者

详细信息

github.com/DsXack/path

源代码

问题

v1.0.1 2015-01-29 06:56 UTC

This package is not auto-updated.

Last update: 2020-10-02 20:34:15 UTC


README

PHP端口Node.js(io.js) path

TravisCI Coverage Status Latest Stable Version Total Downloads License

用法

Path::normalize(p)

标准化路径字符串,处理 '..''.' 部分。

当发现多个斜杠时,它们被替换为一个;当路径包含尾部斜杠时,它被保留。在Windows中使用反斜杠。

示例

Path::normalize('/foo/bar//baz/asdf/quux/..')
// returns
'/foo/bar/baz/asdf'

Path::join([path1][, path2][, ...])

将所有参数连接起来并规范化结果路径。

参数必须是字符串。

示例

Path::join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// returns
'/foo/bar/baz/asdf'

Path::join('foo', [], 'bar')
// throws exception
TypeError: Arguments to Path::join must be strings

Path::resolve([from ...], to)

to 解析为绝对路径。

如果 to 不是一个绝对路径,那么从右到左顺序地添加 from 参数,直到找到绝对路径。如果在使用所有 from 路径之后仍然没有找到绝对路径,则使用当前工作目录。结果路径被规范化,并且除非路径解析到根目录,否则删除尾部斜杠。非字符串的 from 参数将被忽略。

这可以被视为在shell中的 cd 命令序列。

Path::resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')

与以下类似

cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd

不同之处在于不同的路径不需要存在,也可以是文件。

示例

Path::resolve('/foo/bar', './baz')
// returns
'/foo/bar/baz'

Path::resolve('/foo/bar', '/tmp/file/')
// returns
'/tmp/file'

Path::resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
// if currently in /home/myself/node, it returns
'/home/myself/node/wwwroot/static_files/gif/image.gif'

Path::isAbsolute(path)

确定 path 是否是绝对路径。绝对路径将始终解析到相同的位置,无论工作目录如何。

Posix示例

Path::isAbsolute('/foo/bar') // true
Path::isAbsolute('/baz/..')  // true
Path::isAbsolute('qux/')     // false
Path::isAbsolute('.')        // false

Windows示例

Path::isAbsolute('//server')  // true
Path::isAbsolute('C:/foo/..') // true
Path::isAbsolute('bar\\baz')   // false
Path::isAbsolute('.')         // false

Path::relative(from, to)

from 解析到 to 的相对路径。

有时我们有两个绝对路径,我们需要从其中一个推导出另一个的相对路径。这实际上是 path.resolve 的逆变换,这意味着我们可以看到

Path::resolve(from, path.relative(from, to)) == path.resolve(to)

示例

Path::relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb')
// returns
'..\\..\\impl\\bbb'

Path::relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
// returns
'../../impl/bbb'

Path::dirname(p)

返回路径的目录名。类似于Unix dirname 命令。

示例

Path::dirname('/foo/bar/baz/asdf/quux')
// returns
'/foo/bar/baz/asdf'

Path::basename(p[, ext])

返回路径的最后部分。类似于Unix basename 命令。

示例

Path::basename('/foo/bar/baz/asdf/quux.html')
// returns
'quux.html'

Path::basename('/foo/bar/baz/asdf/quux.html', '.html')
// returns
'quux'

Path::extname(p)

返回路径的扩展名,从最后部分的最后一个 '.' 到字符串的结尾。如果最后部分中没有 '.' 或它的第一个字符是 '.',则返回空字符串。示例

Path::extname('index.html')
// returns
'.html'

Path::extname('index.coffee.md')
// returns
'.md'

Path::extname('index.')
// returns
'.'

Path::extname('index')
// returns
''

Path::sep()

特定平台的文件分隔符。 '\\''/'

在*nix上的示例

explode(Path::sep(), 'foo/bar/baz')
// returns
['foo', 'bar', 'baz']

在Windows上的示例

explode(Path::sep(), 'foo\\bar\\baz')
// returns
['foo', 'bar', 'baz']

Path::delimiter()

特定平台的路径分隔符,;':'

在*nix上的示例

echo getenv('PATH')
// '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'

explode(Path::delimiter(), getenv('PATH'))
// returns
['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']

在Windows上的示例

echo getenv('PATH')
// 'C:\Windows\system32;C:\Windows;C:\Program Files\php\'

explode(Path::delimiter(), getenv('PATH'))
// returns
['C:\Windows\system32', 'C:\Windows', 'C:\Program Files\php\']

Path::parse(pathString)

从路径字符串返回一个对象。

在*nix上的示例

Path::parse('/home/user/dir/file.txt')
// returns
[
    "root" => "/",
    "dir" => "/home/user/dir",
    "base" => "file.txt",
    "ext" => ".txt",
    "name" => "file"
]

在Windows上的示例

Path::parse('C:\\path\\dir\\index.html')
// returns
[
    "root" => "C:\",
    "dir" => "C:\path\dir",
    "base" => "index.html",
    "ext" => ".html",
    "name" => "index"
]

Path::format(params)

从对象返回一个路径字符串,与上面的 Path::parse 相反。

Path::format([
    "root" => "/",
    "dir" => "/home/user/dir",
    "base" => "file.txt",
    "ext" => ".txt",
    "name" => "file"
])
// returns
'/home/user/dir/file.txt'

PosixPath 类

提供对上述 path 方法的访问,但始终以 POSIX 兼容的方式交互。

Win32Path 类

提供对上述 path 方法的访问,但始终以 Win32 兼容的方式交互。