kaloa / filesystem
用于文件系统相关任务的实用类。
v0.2.1
2022-06-17 12:19 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpmd/phpmd: ~2.0
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: ^2.8.1
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', ':', '|', '%');
其他注意事项
fetch
和fetchAll
方法接受具有相同流中不同字段数量的行。如果行的字段数量与键的数量不同,则fetchAssoc
和fetchAllAssoc
方法将抛出异常。- 在迭代输入数据时,不能更改
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。