net_bazzline / php_component_csv
免费且自由使用的PHP组件,简化csv文件(读取和写入)的使用(适用于PHP 5.6及以上版本)
1.7.0
2018-11-07 20:30 UTC
Requires
Requires (Dev)
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^0.9
- phpunit/phpunit: ^5.7 || ^6.5
README
本项目旨在提供一个易于使用且自由(在自由意义上)的PHP组件,用于处理csv文件(读取和写入)。
此组件在很大程度上受到了jwage/easy-csv的影响。它主要是由于与php 5.6不兼容以及jwage/easy-csv没有官方Packagist支持而创建的。
查看 openhub.net。
当前变更日志可以在此处找到。
优点
- 低且稳定的内存使用(通过使用benchmarkReader 和 benchmarkWriter 来尝试)
- 适用于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 找到。
其他优秀组件
名人堂 - 贡献者列表
- peter279k - 个人主页
- stevleibelt - 个人主页
贡献
请查看贡献指南获取详细信息。
结语
如果你喜欢它,请给它加星标 :-). 如果需要,请提出问题。如果你喜欢,请提交补丁。如果你使用它,请写一篇博客。如果你喜欢它,请捐款 :-]。