PHPackages                             plumphp/plum - 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. plumphp/plum

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

plumphp/plum
============

Plum is a data processing pipeline that helps you to write structured, reusable and well tested data processing code.

v0.5(10y ago)14088.8k↑106.3%2[2 PRs](https://github.com/plumphp/plum/pulls)17MITPHPPHP &gt;=5.5

Since Mar 18Pushed 3y ago6 watchersCompare

[ Source](https://github.com/plumphp/plum)[ Packagist](https://packagist.org/packages/plumphp/plum)[ Docs](https://github.com/plumphp/plum)[ RSS](/packages/plumphp-plum/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (5)Dependencies (5)Versions (15)Used By (17)

 [![Plum](https://camo.githubusercontent.com/a81342cbfd6f64a484988488ad37bbd0e665d0f14f65ec655ae986097447bfb6/687474703a2f2f63646e2e666c6f7269616e2e65632f706c756d2d6c6f676f2e737667)](https://camo.githubusercontent.com/a81342cbfd6f64a484988488ad37bbd0e665d0f14f65ec655ae986097447bfb6/687474703a2f2f63646e2e666c6f7269616e2e65632f706c756d2d6c6f676f2e737667)

> Plum is a data processing pipeline that helps you to write structured, reusable and well tested data processing code.

[![Build Status](https://camo.githubusercontent.com/231bd12818db07bf64b0e29e5f1a8f3827bc5ebb5b94a772211bbdc698b2a377/68747470733a2f2f7472617669732d63692e6f72672f706c756d7068702f706c756d2e7376673f6272616e63683d6d6173746572267374796c653d666c61742d737175617265)](https://travis-ci.org/plumphp/plum)[![Windows Build status](https://camo.githubusercontent.com/7fc3763e360066463e9606ecfdaf11f993d1e691a624e00ebffe527fd699ae46/68747470733a2f2f63692e6170707665796f722e636f6d2f6170692f70726f6a656374732f7374617475732f67696179687232323332746c616b61763f7376673d74727565)](https://ci.appveyor.com/project/florianeckerstorfer/plum)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/5226474d682db6ccfa7e74991b4c1f48e61b3c1f67c9090b5958906db59478a9/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f706c756d7068702f706c756d2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572267374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/plumphp/plum/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/30308bd280eba4f27c8075af389038a3927a97ff24bcedd0b28ffec542a8f1d2/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f706c756d7068702f706c756d2f6261646765732f636f7665726167652e706e673f623d6d6173746572267374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/plumphp/plum/?branch=master)[![StyleCI](https://camo.githubusercontent.com/25304aaf3a3af4aaaf8ba9b57e60d59ae493c2d812f783c98eb2786911b815fb/68747470733a2f2f7374796c6563692e696f2f7265706f732f33303230343336302f736869656c64)](https://styleci.io/repos/30204360)

[![Latest Release](https://camo.githubusercontent.com/5a7542d971e8b47e991c7b6328d9f97cafe3a06be0c1ac2df9d58f4b8702394d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f706c756d7068702f706c756d2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/plumphp/plum)[![MIT License](https://camo.githubusercontent.com/19a9f5176dfe6ee6ed3c06aa9a4d647fbbb5d3757f452f8cb7c835d978ee717f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f706c756d7068702f706c756d2e7376673f7374796c653d666c61742d737175617265)](http://opensource.org/licenses/MIT)[![Total Downloads](https://camo.githubusercontent.com/752a60c3b1f8de2ef241913b272ed990e2f76470250082c3076a61d763822818/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f706c756d7068702f706c756d2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/plumphp/plum)

Developed by [Florian Eckerstorfer](https://florian.ec) in Vienna, Europe.

Features
--------

[](#features)

Plum is a data processing pipeline, that means it reads data, filters and converts it and then writes the data.

- Filters, converters and even writers are pipeline elements that can be attached to a workflow in arbitrary order
- Readers are iterators that can return values of arbitrary type: arrays, objects or scalars, it doesn't matter to Plum
- Conditional converters that are only applied to an item if it passes a filter
- Ability to concatenate workflow to create smaller and better reusable workflows
- Read from multiple sources, i.e., merge data from different sources into an output
- Plums power comes from its extendability, check out [additional packages and integrations](docs/extensions.md)

*Plum has been greatly inspired by [ddeboer/data-import](https://github.com/ddeboer/data-import).*

Usage
-----

[](#usage)

Here is a quick preview, but please check out the [documentation](https://github.com/plumphp/plum/blob/master/docs/index.md).

```
use Plum\Plum\Workflow;

$workflow = new Workflow();
$workflow->addFilter(/* filter */)
         ->addConverter(/* converter */)
         ->addWriter(/* writer */);
$workflow->process(/* reader */);
```

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

[](#installation)

You can install Plum using [Composer](http://getcomposer.org) (recommended) or by downloading a [release](https://github.com/plumphp/plum/releases).

```
$ composer require plumphp/plum
```

Contribute
----------

[](#contribute)

If you want to help us improve Plum you can contribute in a number of different ways:

- Fix bugs or add additional features (check our [Waffle board](https://waffle.io/plumphp/plum) to see features and bugs that are ready to go)
- Help others by providing support to others: [Issues](https://github.com/plumphp/plum/issues) and [Chat](https://gitter.im/plumphp/plum)
- Improve the [documentation](https://github.com/plumphp/plum/blob/master/docs/index.md)
- Spread the work by tweeting, blogging or talking about Plum at your local user group

When you need help or have any questions feel free to [contact us](#support).

Support
-------

[](#support)

If you need help getting started, run into problems or want to discuss new features you can also contact us. You can either create a new [issue](https://github.com/plumphp/plum/issues), you can join our [Gitter chat](https://gitter.im/plumphp/plum) or ping us on Twitter [@cocurco](https://twitter.com/cocurco).

**Please be excellent to each other.**

Authors
-------

[](#authors)

- [Florian Eckerstorfer](https://florian.ec) ([Twitter](https://twitter.com/florian_), [Donate €5](https://paypal.me/florianec/5))
- Some [fantastic contributors](https://github.com/plumphp/plum/graphs/contributors)

*Plum is a [Cocur](http://cocur.co) open source project.*

Change Log
----------

[](#change-log)

See [CHANGELOG.md](https://github.com/plumphp/plum/blob/master/CHANGELOG.md).

License
-------

[](#license)

The MIT license applies to plumphp/plum. For the full copyright and license information, please view the [LICENSE](https://github.com/plumphp/plum/blob/master/LICENSE) file distributed with this source code.

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity45

Moderate usage in the ecosystem

Community23

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 50% 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 ~33 days

Recently: every ~69 days

Total

11

Last Release

3743d ago

PHP version history (2 changes)0.2.x-devPHP &gt;=5.4

0.5.x-devPHP &gt;=5.5

### Community

Maintainers

![](https://www.gravatar.com/avatar/a80f9fc61cd3a7d7779e8f120b458ca4d18fdd885d719bb77d3379b96bf714d9?d=identicon)[florianeckerstorfer](/maintainers/florianeckerstorfer)

---

Top Contributors

[![florianeckerstorfer](https://avatars.githubusercontent.com/u/149201?v=4)](https://github.com/florianeckerstorfer "florianeckerstorfer (2 commits)")[![Sgoettschkes](https://avatars.githubusercontent.com/u/628796?v=4)](https://github.com/Sgoettschkes "Sgoettschkes (2 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/plumphp-plum/health.svg)

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

###  Alternatives

[ecotone/ecotone

Supporting you in building DDD, CQRS, Event Sourcing applications with ease.

558549.8k17](/packages/ecotone-ecotone)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

728272.9k20](/packages/civicrm-civicrm-core)[j0k3r/php-readability

Automatic article extraction from HTML

186808.8k6](/packages/j0k3r-php-readability)[symfony/ai-platform

PHP library for interacting with AI platform provider.

51927.7k136](/packages/symfony-ai-platform)[symfony/ai-agent

PHP library for building agentic applications.

30536.7k44](/packages/symfony-ai-agent)[spomky-labs/pwa-bundle

Progressive Web App Manifest Generator Bundle for Symfony.

6144.4k1](/packages/spomky-labs-pwa-bundle)

PHPackages © 2026

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