PHPackages                             rollun-com/rollun-files - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. rollun-com/rollun-files

ActiveLibrary

rollun-com/rollun-files
=======================

For work with Csv files

1.0.2(1y ago)00BSD-3-ClausePHPPHP 8.0.\*

Since Feb 19Pushed 1y agoCompare

[ Source](https://github.com/rollun-lc/rollun-files)[ Packagist](https://packagist.org/packages/rollun-com/rollun-files)[ RSS](/packages/rollun-com-rollun-files/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (4)Versions (5)Used By (0)

rollun-files
============

[](#rollun-files)

Installation
------------

[](#installation)

`composer require rollun-com/rollun-files`

Опис
----

[](#опис)

Представляє собою бібліотеку для розширеного управління файловою системою, з особливим акцентом на роботу з CSV‑файлами. Його функціональність включає:

### Базові файлові операції

[](#базові-файлові-операції)

- **FileManager:**
    Надає методи для створення директорій, рекурсивного видалення файлів та папок, а також для безпечного відкриття, блокування та закриття файлів. Реалізована логіка повторних спроб при доступі до файлів, що забезпечує коректну поведінку в умовах конкурентного доступу.

### Розширені можливості роботи з файлами

[](#розширені-можливості-роботи-з-файлами)

- **FileObject:**
    Наслідує стандартний `SplFileObject`, доповнюючи його методами для точкової модифікації файлу — вставки, видалення та перезапису окремих рядків, підрахунку рядків, зміни розміру файлу з урахуванням буферизації та перевірки коректності операцій запису/читання.

### Спеціалізована робота з CSV‑файлами

[](#спеціалізована-робота-з-csvфайлами)

- **CsvFileObject:**
    Забезпечує зручне читання та запис CSV‑даних, автоматичне визначення заголовків, ітерацію по рядках та коректну обробку спеціальних символів (наприклад, нормалізацію символів переведення рядка).
- **CsvFileObjectWithPrKey:**
    Розширює можливості роботи з CSV, передбачаючи наявність первинного ключа (зазвичай у першому стовпці). Дозволяє виконувати пошук, додавання та оновлення рядків за значенням цього ключа.

### Підтримка стратегій пошуку та модифікації

[](#підтримка-стратегій-пошуку-та-модифікації)

- **Патерн «Стратегія»:**
    Інтерфейс `CsvStrategyInterface` та його реалізація, наприклад, `CsvBinaryStrategy`, реалізують механізм швидкого доступу до рядків CSV‑файлу (на основі бінарного пошуку) за умови, що файл відсортовано за первинним ключем. Це дозволяє ефективно знаходити, вставляти та оновлювати записи.

---

Таким чином, бібліотека об’єднує функціонал для надійного та ефективного управління звичайними файлами, а також для детальної роботи з CSV‑даними. Він підходить для сценаріїв, де потрібні не лише операції читання/запису файлів, а й складне редагування їх вмісту з забезпеченням безпеки та конкурентного доступу.

Usage
-----

[](#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
 */
```

Contributing
------------

[](#contributing)

[docs/contributing.md](docs/contributing.md)

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance46

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 88.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

3

Last Release

410d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a580b0a91b7d5d602f8858c7c747c49542ea14b631dcd976eed93a0d3014a8de?d=identicon)[Andrey Zaboychenko](/maintainers/Andrey%20Zaboychenko)

---

Top Contributors

[![vadymk-rollun](https://avatars.githubusercontent.com/u/194381237?v=4)](https://github.com/vadymk-rollun "vadymk-rollun (31 commits)")[![lazarevrollun](https://avatars.githubusercontent.com/u/133766569?v=4)](https://github.com/lazarevrollun "lazarevrollun (3 commits)")[![rollun-com](https://avatars.githubusercontent.com/u/25004261?v=4)](https://github.com/rollun-com "rollun-com (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/rollun-com-rollun-files/health.svg)

```
[![Health](https://phpackages.com/badges/rollun-com-rollun-files/health.svg)](https://phpackages.com/packages/rollun-com-rollun-files)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
