miquido/csv-file-reader
Composer 安装命令:
composer require miquido/csv-file-reader
包简介
CSV Reader library
README 文档
README
CSV File Reader
Installation
Use Composer to install the package:
composer require miquido/csv-file-reader
Code Samples
- Simple read a csv file example
- Process a file as a stream
- Using data transformer and error handler
- Batch processing
Simple read a csv file example
<?php use Miquido\CsvFileReader\CsvFile; use Miquido\CsvFileReader\Line\CsvLineInterface; // open a file $csv = new CsvFile('./examples/users.csv'); $count = $csv->countLines(); // 101 // don't worry about memory, it reads a file line-by-line foreach ($csv->readLines() as $line) { /** @var CsvLineInterface $line */ $line->getLineNumber(); // 2 ... 101 $line->getData(); // ['id' => '1', 'name' => 'Miriam', 'surname' => 'Mccoy', 'age' => '79'] ... }
Process a file as a stream
Miquido\CsvFileReader\CsvFileReader class uses miquido/observable library for data processing.
<?php use Miquido\CsvFileReader\CsvFile; use Miquido\CsvFileReader\CsvFileReader; use Miquido\CsvFileReader\Line\CsvLineInterface; $reader = new CsvFileReader(new CsvFile('./examples/users.csv')); $reader->lines()->subscribe(function (CsvLineInterface $line) { // do something with a line $line->getLineNumber(); // 2 ... 101 $line->getData(); // ['id' => '1', 'name' => 'Miriam', 'surname' => 'Mccoy', 'age' => '79'] ... }); $reader->loop(); // start reading a file
Using data transformer and error handler
Please check miquido/data-structure library for more details about classes used in examples below.
<?php use Miquido\CsvFileReader\CsvFile; use Miquido\CsvFileReader\CsvFileReader; use Miquido\CsvFileReader\Line\CsvLineInterface; use Miquido\DataStructure\Map\MapInterface; use Miquido\DataStructure\Map\Map; // change data to Map object $transformer = function (array $data, int $line): MapInterface { return new Map($data); }; $reader = new CsvFileReader(new CsvFile('./examples/users.csv'), $transformer); $reader->lines()->subscribe(function (CsvLineInterface $line): void { $line->getData(); // getData() now returns Map() object }); $reader->loop(); // start reading a file
If transformer throws an error, it will appear in $reader->errors() stream
<?php use Miquido\CsvFileReader\CsvFile; use Miquido\CsvFileReader\CsvFileReader; use Miquido\CsvFileReader\Exception\InvalidCsvLineException; // check user's age $transformer = function (array $data, int $line): array { $age = (int) $data['age']; if ($age < 18) { throw new \Exception('Invalid age'); } return $data; }; $reader = new CsvFileReader(new CsvFile('./examples/users.csv'), $transformer); $reader->data()->subscribe(function (array $lineData): void { // do something with data }); $reader->errors()->subscribe(function (InvalidCsvLineException $e): void { // do something with an error $e->getMessage(); $e->getCsvLine(); }); $reader->loop(); // start reading a file
Batch processing
Simply use Miquido\Observable\Operator:
<?php use Miquido\CsvFileReader\CsvFile; use Miquido\CsvFileReader\CsvFileReader; use Miquido\Observable\Operator; $batchSize = 10; $reader = new CsvFileReader(new CsvFile('./examples/users.csv')); $reader->lines()->pipe(new Operator\BufferCount($batchSize))->subscribe(function (array $lines): void { // do something with 10 lines }); $reader->loop(); // start reading a file
See miquido/observable library for more operators.
Contributing
Pull requests, bug fixes and issue reports are welcome. Before proposing a change, please discuss your change by raising an issue.
miquido/csv-file-reader 适用场景与选型建议
miquido/csv-file-reader 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 58 次下载、GitHub Stars 达 5, 最近一次更新时间为 2018 年 08 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「csv」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 miquido/csv-file-reader 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 miquido/csv-file-reader 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 miquido/csv-file-reader 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
laravel facade to read/write csv file
Collection of tools to use the full power of the Enyalius framework
Alfabank REST API integration
Fast Excel import/export for Laravel
Spreadsheet reader library for Excel, OpenOffice and structured text files, compatible with cakephp3
A formatting library that converts data output between XML, CSV, JSON, TXT, YAML and a few others.
统计信息
- 总下载量: 58
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 15
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-08-17