kwebble/directory-folder-path

用于操作表示目录/文件夹/路径名称的字符串的实用程序

1.1.0 2018-04-13 21:39 UTC

This package is not auto-updated.

Last update: 2020-08-07 19:49:49 UTC


README

开源PHP软件,用于操作表示目录/文件夹/路径名称的字符串。

版权所有 © 2015, 2018 Rob Schlüter

根据MIT许可证授权。有关详细信息,请参阅LICENSE文件。

描述

这个小软件只做一件事:操作表示路径的文件夹名称的字符串。您可以添加和删除此路径的文件夹。

在表示路径的每个字符串中,您都可以使用 /\ 作为文件夹分隔符。从 getPath 获得的输出始终使用 /,因此它与使用路径的PHP函数兼容。

该类可以处理绝对和相对路径。

方法实现了流体API,以便实现方法链。

要添加或删除的文件夹可以以分隔符开头或结尾,这并不重要。唯一真正有关系的情况是在操作路径的根时。例如,要删除路径的根,路径必须以分隔符开头。

当您尝试删除不存在的文件夹时,将生成类型为 E_USER_NOTICE 的错误。

该组件也被用作我在文章 Including PHPUnit tests in SonarQube analysis 中描述的文件、文件夹和配置的示例。

示例

创建表示路径的对象

use kwebble\directoryfolderpath\DirectoryFolderPath;

$base = new DirectoryFolderPath('/source/php/project/src/main/php');

要获取操作后的新名称,请使用 getPath() 方法

$name = $base->getName();

要添加文件夹

$base->push('child');
// result: /source/php/project/src/main/php/child

$base->push('child/with/sub/folders');
// result: /source/php/project/src/main/php/child/with/sub/folders

要删除文件夹

$base->pop('php')
// result: /source/php/project/src/main

$base->pop('src/main/php')
// result: /source/php/project

可以使用特殊值 .. 来删除任何文件夹

$base->pop('..')
// result: /source/php/project/src/main

$base->pop('../..')
// result: /source/php/project/src

使用方法链

$base->pop('..')
     ->push('java');
// result: /source/php/project/src/java

要找到特定的父文件夹并将路径缩短到它

$base->parent('project');
// result: /source/php/project

要获取路径的各个部分作为数组,以执行自己的处理

$base->getParts();
// result: ['source', 'php', 'project']

这就是我创建这个类的原因,我想'计算'一个路径。

$dfp = new DirectoryFolderPath(__DIR__);

$path = $dfp->pop(__NAMESPACE__)
            ->pop(static::PHP_MAIN_PATH)
            ->push(static::DATA_FOLDER)
            ->push(static::IP_RANGES_FOLDER)
            ->getPath();

开发

代码作为Composer包分发,但您也可以直接使用DirectoryFolderPath类。没有其他依赖项。

测试

该软件包包含一组PHPUnit测试。要运行它们,请使用以下命令

composer run-script test

这将创建一个包含以XML格式描述测试结果的文件的build文件夹。我使用此输出运行SonarQube以分析源代码。该工具的配置存储在sonar-project.properties中。