net_bazzline/php_component_csv

免费且自由使用的PHP组件,简化csv文件(读取和写入)的使用(适用于PHP 5.6及以上版本)

1.7.0 2018-11-07 20:30 UTC

This package is auto-updated.

Last update: 2024-09-16 20:40:45 UTC


README

本项目旨在提供一个易于使用且自由(在自由意义上)的PHP组件,用于处理csv文件(读取和写入)。

此组件在很大程度上受到了jwage/easy-csv的影响。它主要是由于与php 5.6不兼容以及jwage/easy-csv没有官方Packagist支持而创建的。

当前主分支的构建状态由Travis CI跟踪: Build Status Latest stable

scrutinizer的状态是:code quality

versioneye的状态是:Dependency Status

查看 openhub.net

当前变更日志可以在此处找到。

优点

  • 低且稳定的内存使用(通过使用benchmarkReaderbenchmarkWriter 来尝试)
  • 适用于PHP 5.6及以上版本
  • 实现了__invoke()以将其用作函数
  • 统一的读取器和写入器
  • 适配器,简化从EasyCsv - 0.0.1迁移到本组件的过程
  • 使用过滤器 - 控制输入和输出内容
  • 读取器
    • 实现了迭代器
    • readOne();
    • readMany();
    • readAll();
  • 写入器
    • copy();
    • delete();
    • move();
    • truncate();
    • writeOne();
    • writeMany();
    • writeAll(); // 截断文件并写入内容

安装

手动安装

mkdir -p vendor/net_bazzline/php_component_csv
cd vendor/net_bazzline/php_component_csv
git clone https://github.com/bazzline/php_component_csv .

使用 Packagist

composer require net_bazzline/php_component_csv:dev-master

使用方法

读取器

读取内容

$reader = new Reader('my/file.csv');
//I am using json_encode() since there is no official and best way how to
// output arrays on the command line.

//read one line
echo json_encode($reader->readOne()) . PHP_EOL;

//read 10 lines
foreach ($reader->readMany(10) as $line) {
    echo json_encode($line) . PHP_EOL;
}

//read all lines
foreach ($reader->readAll() as $line) {
    echo json_encode($line) . PHP_EOL;
}

通过迭代

$reader = new Reader('my/file.csv');
//I am using json_encode() since there is no official and best way how to
// output arrays on the command line.

if ($reader->hasHeadline()) {
    echo 'headlines: ' . json_encode($reader->readHeadline());
}

foreach ($reader as $line) {
    echo json_encode($line) . PHP_EOL;
}

作为函数使用

$reader = new Reader('my/file.csv');
//I am using json_encode() since there is no official and best way how to
// output arrays on the command line.

while ($line = $reader()) {
    echo json_encode($line) . PHP_EOL;
}

写入器

写入内容

通过迭代

//$headlines contains a php array
//$lines contains a php array of arrays
$writer = new Writer('my/file.csv');

$writer->writeHeadline($headlines);

foreach ($lines as $line) {
    $writer->writeOne($line);
}

一次性写入

//$headlines contains a php array
//$lines contains a php array of arrays
$writer = new Writer('my/file.csv');

$writer->writeHeadline($headlines);
$writer->writeMany($lines);

作为函数使用

//$line contains a php array
//$lines contains a php array of arrays
$writer = new Writer('my/file.csv');

$writer($line);

foreach ($lines as $line) {
    $writer($line);
}

截断

$writer = new Writer('my/file.csv');

$writer->truncate();

复制

$writer = new Writer('my/file.csv');

$writer->copy('my/my_first_copy.csv');    //writer will still write into "file.csv"

$writer->copy('my/my_second_copy.csv', true);    //writer will write in "my_second_copy.csv"

移动

$writer = new Writer('my/file.csv');

$writer->move('my/new_name.csv');   //writer will write in "new_name.csv"

API

API 可在 bazzline.net 找到。

其他优秀组件

名人堂 - 贡献者列表

贡献

请查看贡献指南获取详细信息。

结语

如果你喜欢它,请给它加星标 :-). 如果需要,请提出问题。如果你喜欢,请提交补丁。如果你使用它,请写一篇博客。如果你喜欢它,请捐款 :-]。