kaloa/filesystem

用于文件系统相关任务的实用类。

v0.2.1 2022-06-17 12:19 UTC

This package is not auto-updated.

Last update: 2024-09-20 22:48:31 UTC


README

安装

通过 Composer

$ composer require kaloa/filesystem

要求

以下 PHP 版本得到支持

  • PHP 5.3
  • PHP 5.4
  • PHP 5.5
  • PHP 5.6
  • PHP 7.0
  • PHP 7.1
  • HHVM

文档

CsvReader

目标

  • 提供一个接口,将流中的 CSV 数据读取到关联数组中。

用法

从流中读取所有 CSV 行到数值数组。这也是一个一般用法示例。

use Kaloa\Filesystem\CsvReader;

$stream = fopen(__DIR__ . '/file.csv', 'rb');

$csvReader = new CsvReader($stream);
$data = $csvReader->fetchAll();

fclose($stream);

从流中读取所有 CSV 行到关联数组。输入的第一行将用作键。

$data = $csvReader->fetchAllAssoc();

如果文件不包含具有键的行,可以手动提供键。第一行将被视为常规数据。

$data = $csvReader->fetchAllAssoc(array('id', 'title', 'date_added'));

还有一个流模式可用。

while ($row = $csvReader->fetch()) {
    // ...
}

流模式也适用于关联数组。在这里,第一次调用 fetchAssoc 将透明地读取输入的前两行,以读取键和第一个数据行。

while ($row = $csvReader->fetchAssoc()) {
    // ...
}

相应地

while ($row = $csvReader->fetchAssoc(array('id', 'title', 'date_added'))) {
    // ...
}

读者类旨在始终返回 UTF-8 数据。如果指定了输入编码的构造函数,则不同 CSV 输入编码将被自动转换。

$csvReader = new CsvReader($iso88591Stream, 'ISO-8859-1');

还支持非标准分隔符、包装符和转义字符。

$csvReader = new CsvReader($stream, 'UTF-8', ':', '|', '%');

其他注意事项

  • fetchfetchAll 方法接受具有相同流中不同字段数量的行。如果行的字段数量与键的数量不同,则 fetchAssocfetchAllAssoc 方法将抛出异常。
  • 在迭代输入数据时,不能更改 fetchAssoc 的键名。读者始终使用第一次调用 fetchAssoc 时的键。
  • 不要混合调用不同的 fetch* 方法。目前,代码没有阻止这样做,但很可能在未来版本中添加此功能。

食谱

对于与读者一起使用,可以使用 数据协议 将 PHP 字符串转换为流。

$csvString = <<<'CSV'
"Col a","Col b"
"value 1a","value 1b"
"value 2a","value 2b"
CSV;

$dataUri = 'data://text/plain;base64,' . base64_encode($csvString);

$stream = fopen($dataUri, 'rb');

$reader = new CsvReader($stream);

PathHelper

目标

  • realpath 对于不存在的文件”是基本思想。
  • 解析不指向现有文件或目录的“虚拟”文件系统路径的相对组件(...)。
  • 为这样的路径生成一个规范表示。
  • 代码必须在多个系统上能够处理绝对路径和相对路径。
  • 它必须能够处理 Windows 上的绝对路径。(例如 c:\foo 在 Windows 上被视为绝对路径,但在 Linux 上被视为相对路径。在 Linux 上 c:\foo 是一个有效的文件名。)

用法

use Kaloa\Filesystem\PathHelper;

$pathHelper = new PathHelper();

$pathHelper->normalize('./dir1/dir2/dir3/dir4/../../../'); // "dir1"

测试

(工具不包括在此包中。)

$ phpunit

进一步的质量保证

$ phpcs --standard=PSR2 ./src
$ phpmd ./src text codesize,design,naming

致谢

许可

该软件包根据 MIT 许可证发布。有关完整许可信息,请参阅 LICENSE