PHPackages                             metin/exodus - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. metin/exodus

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

metin/exodus
============

Simple and flexible data export library for PHP

0.3.0(1y ago)01MITPHPPHP ^8.2

Since Jan 28Pushed 1y ago1 watchersCompare

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

READMEChangelog (3)Dependencies (2)Versions (8)Used By (0)

Exodus
======

[](#exodus)

Simple and flexible data export library for PHP.

```
$exporter = new ExportManager(new CsvExporter());
$options = new ExportOptions(
    path: '/path/to/export',
    delimiter: ',',
    includeHeaders: true
);
$result = $exporter->process($data, $options);
```

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

[](#installation)

You can install the package via composer:

```
composer require metin/exodus
```

Requirements
------------

[](#requirements)

- PHP 8.2 or higher
- ext-json
- ext-fileinfo
- ext-mbstring

Basic Usage
-----------

[](#basic-usage)

### CSV Export

[](#csv-export)

```
use Metin\Exodus\Core\ExportManager;
use Metin\Exodus\Exporters\CsvExporter;
use Metin\Exodus\Dto\ExportOptions;
// Prepare data
$data = [
    ['name' => 'John Doe', 'email' => 'john@example.com'],
    ['name' => 'Jane Doe', 'email' => 'jane@example.com']
];
// Configure export options
$options = new ExportOptions(
    path: '/path/to/export',
    delimiter: ',',
    includeHeaders: true,
    filename: 'users.csv'
);
// Create exporter and process
$exporter = new ExportManager(new CsvExporter());
$result = $exporter->process($data, $options);
if ($result->success) {
    echo "File exported to: " . $result->path;
} else {
    echo "Export failed: " . $result->error;
}
```

### JSON Export

[](#json-export)

```
use Metin\Exodus\Core\ExportManager;
use Metin\Exodus\Exporters\JsonExporter;
use Metin\Exodus\Dto\ExportOptions;

// Prepare data
$data = [
    ['name' => 'John Doe', 'email' => 'john@example.com'],
    ['name' => 'Jane Doe', 'email' => 'jane@example.com']
];

// Configure export options
$options = new ExportOptions(
    path: '/path/to/export',
    filename: 'users.json',
    formatOptions: [
        'prettyPrint' => true,
        'unescapeUnicode' => true
    ]
);

// Create exporter and process
$exporter = new ExportManager(new JsonExporter());
$result = $exporter->process($data, $options);

if ($result->success) {
    echo "File exported to: " . $result->path;
} else {
    echo "Export failed: " . $result->error;
}
```

Features
--------

[](#features)

- Export data to multiple formats (CSV, JSON)
- Format specific options support
- CSV Features:
- - Configurable delimiter
- - Optional headers
- JSON Features:
- - Pretty print option
- - Unicode character support
- Comprehensive error handling
- Data validation
- Type-safe objects

Testing
-------

[](#testing)

The package comes with a PHPUnit test suite. To run the tests:

```
composer test
```

### Test Directory Structure

[](#test-directory-structure)

```
tests/
├── TestCase.php              # Base test case with helper methods
├── Dto/                      # Tests for Data Transfer Objects
├── Exporters/               # Tests for Export implementations
└── data/                    # Test data directory (auto-created)

```

### Testing Different Scenarios

[](#testing-different-scenarios)

The test suite covers:

- CSV export with/without headers
- Custom delimiters
- Auto-generated and custom filenames
- Error scenarios (invalid directory, empty data, etc.)
- Data validation

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance42

Moderate activity, may be stable

Popularity1

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~0 days

Total

4

Last Release

475d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/93cf1ca402084e9141a541a8956d1f09fc64b6029c047d49a9df85d0f98d0598?d=identicon)[metinbolat](/maintainers/metinbolat)

---

Top Contributors

[![metinbolat](https://avatars.githubusercontent.com/u/95864763?v=4)](https://github.com/metinbolat "metinbolat (8 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/metin-exodus/health.svg)

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

###  Alternatives

[symfony/ux-turbo

Hotwire Turbo integration for Symfony

3906.8M47](/packages/symfony-ux-turbo)[spiral/attributes

PHP attributes reader

233.6M45](/packages/spiral-attributes)

PHPackages © 2026

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