rollun-com / rollun-files
For work with Csv files
Requires
- php: 8.0.*
- ajgl/csv-rfc: ^0.4.0
- rollun-com/rollun-utils: ^8.1.0
Requires (Dev)
- filp/whoops: ^2.15
- phpunit/phpunit: ^9.6.20
This package is auto-updated.
Last update: 2025-04-03 22:22:41 UTC
README
Installation
composer require rollun-com/rollun-files
Опис
Представляє собою бібліотеку для розширеного управління файловою системою, з особливим акцентом на роботу з CSV‑файлами. Його функціональність включає:
Базові файлові операції
- FileManager:
Надає методи для створення директорій, рекурсивного видалення файлів та папок, а також для безпечного відкриття, блокування та закриття файлів. Реалізована логіка повторних спроб при доступі до файлів, що забезпечує коректну поведінку в умовах конкурентного доступу.
Розширені можливості роботи з файлами
- FileObject:
Наслідує стандартнийSplFileObject
, доповнюючи його методами для точкової модифікації файлу — вставки, видалення та перезапису окремих рядків, підрахунку рядків, зміни розміру файлу з урахуванням буферизації та перевірки коректності операцій запису/читання.
Спеціалізована робота з CSV‑файлами
-
CsvFileObject:
Забезпечує зручне читання та запис CSV‑даних, автоматичне визначення заголовків, ітерацію по рядках та коректну обробку спеціальних символів (наприклад, нормалізацію символів переведення рядка). -
CsvFileObjectWithPrKey:
Розширює можливості роботи з CSV, передбачаючи наявність первинного ключа (зазвичай у першому стовпці). Дозволяє виконувати пошук, додавання та оновлення рядків за значенням цього ключа.
Підтримка стратегій пошуку та модифікації
- Патерн «Стратегія»:
ІнтерфейсCsvStrategyInterface
та його реалізація, наприклад,CsvBinaryStrategy
, реалізують механізм швидкого доступу до рядків CSV‑файлу (на основі бінарного пошуку) за умови, що файл відсортовано за первинним ключем. Це дозволяє ефективно знаходити, вставляти та оновлювати записи.
Таким чином, бібліотека об’єднує функціонал для надійного та ефективного управління звичайними файлами, а також для детальної роботи з CSV‑даними. Він підходить для сценаріїв, де потрібні не лише операції читання/запису файлів, а й складне редагування їх вмісту з забезпеченням безпеки та конкурентного доступу.
Usage
use rollun\files\Csv\CsvFileObjectWithPrKey; $filename = 'data.csv'; /* * id,name,age * 123,Ivan,25 */ $csv = new CsvFileObjectWithPrKey( $filename, ',', '"', '\\', CsvBinaryStrategy::class, 'id' ); $row = $csv->getRowById("123"); // 123,Ivan,25 $newRow = [ "id" => "456", "name" => "John Doe", "age" => "30", ]; $csv->addRow($newRow); // add row to csv /* * id,name,age * 123,Ivan,25 * 456,John Doe,30 */ $updatedRow = [ "id" => "456", "name" => "John Smith", "age" => "31", ]; $csv->setRow($updatedRow); // update row with id 456 /* * id,name,age * 123,Ivan,25 * 456,John Smith,31 */