riimu/kit-pathjoin

跨平台库,用于规范和连接文件系统路径

v1.2.0 2017-07-09 14:41 UTC

This package is auto-updated.

Last update: 2024-09-19 20:03:20 UTC


README

PathJoin 是一个PHP库,用于规范和连接文件系统路径。该库的目的是使无论在哪个平台或系统目录分隔符下,处理文件系统路径都变得更加容易。

文件路径规范化的目的是提供一个统一的文件路径表示。换句话说,该库中的规范化将解析目录引用 ...,并将多个目录分隔符压缩成一个。这使得比较路径时避免常见问题变得容易得多。

虽然PHP提供了一个内置函数 realpath(),但由于它是通过文件系统工作的,所以并非在所有情况下都适用。这个库简单地将路径合并并使用字符串处理进行规范化。不需要文件或目录是可读的,甚至不需要存在。

API文档可在以下位置找到: http://kit.riimu.net/api/pathjoin/

Travis Scrutinizer Scrutinizer Coverage Packagist

需求

  • 最低支持的PHP版本是5.6

安装

使用Composer安装

安装此库最简单的方法是使用Composer来管理依赖。要使用Composer安装此库,请按照以下两个步骤操作

  1. 在项目根目录下运行Composer的命令行安装,以获取 composer.phar

  2. 运行安装脚本后,您应该在项目根目录中拥有 composer.phar 文件,并可以运行以下命令

    php composer.phar require "riimu/kit-pathjoin:^1.2"
    

通过Composer安装此库后,您可以通过包含由Composer在安装期间生成的 vendor/autoload.php 文件来加载库。

添加库作为依赖项

如果您已经熟悉如何使用Composer,您还可以通过将以下 composer.json 文件添加到您的项目并运行 composer install 命令来将库作为依赖项添加

{
    "require": {
        "riimu/kit-pathjoin": "^1.2"
    }
}

手动安装

如果您不希望使用Composer来加载库,您还可以通过下载最新版本并将 src 文件夹提取到您的项目中来手动下载库。然后,您可以包含提供的 src/autoload.php 文件来加载库类。

用法

此库提供了两个方便的方法,Path::normalize()Path::join()。这两个方法的工作方式非常相似。主要区别在于,join() 方法可以接受多个路径进行连接,而 normalize() 只接受单个路径。这两种方法都将返回规范化的路径作为结果。

以下示例将包含该库的多种不同用法

<?php

require 'vendor/autoload.php';
use Riimu\Kit\PathJoin\Path;

// Both of the following will output 'foo/bar' on Unix and 'foo\bar' on Windows
echo Path::normalize('foo/bar') . PHP_EOL;
echo Path::join('foo', 'bar') . PHP_EOL;

// The join method accepts multiple arguments or a single array
echo Path::join('foo', 'bar', 'baz') . PHP_EOL;   // outputs 'foo/bar/baz'
echo Path::join(['foo', 'bar', 'baz']) . PHP_EOL; // outputs 'foo/bar/baz'

// The '.' and '..' directory references will be resolved in the paths
echo Path::normalize('foo/./bar/../baz') . PHP_EOL;     // outputs 'foo/baz'
echo Path::join(['foo/./', 'bar', '../baz']) . PHP_EOL; // outputs 'foo/baz'

// Only the first path can denote an absolute path in the join method
echo Path::join('/foo', '/bar/baz') . PHP_EOL;     // outputs '/foo/bar/baz'
echo Path::join('foo', '/bar') . PHP_EOL;          // outputs 'foo/bar'
echo Path::join('foo', '../bar', 'baz') . PHP_EOL; // outputs 'bar/baz'
echo Path::join('', '/bar', 'baz') . PHP_EOL;      // outputs 'bar/baz'

// Relative paths can start with a '..', but absolute paths cannot
echo Path::join('/foo', '../../bar', 'baz') . PHP_EOL; // outputs '/bar/baz'
echo Path::join('foo', '../../bar', 'baz') . PHP_EOL;  // outputs '../bar/baz'

// Empty paths will result in a '.'
echo Path::normalize('foo/..') . PHP_EOL;
echo Path::join('foo', 'bar', '../..') . PHP_EOL;

Path::normalize() 还接受一个名为 $prependDrive 的第二个参数,它接受布尔值,默认为 true。在Windows平台上,驱动器字母是绝对路径的重要部分。因此,当参数设置为 true 时,如果绝对路径本身没有提供驱动器字母,该方法将向绝对路径前缀添加当前工作目录的驱动器字母。

以下示例适用于Windows系统,如果工作目录位于C:驱动器上

<?php

require 'vendor/autoload.php';
use Riimu\Kit\PathJoin\Path;

echo Path::normalize('/foo/bar') . PHP_EOL;        // outputs 'C:\foo\Bar'
echo Path::normalize('D:/foo/bar') . PHP_EOL;      // outputs 'D:\foo\Bar'
echo Path::normalize('/foo/bar', false) . PHP_EOL; // outputs '\foo\Bar'

致谢

此库的版权所有(c)2014-2017 Riikka Kalliomäki。

查看LICENSE获取许可和复制信息。