PHPackages                             rollun-com/rollun-datahandler - 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. [Framework](/categories/framework)
4. /
5. rollun-com/rollun-datahandler

ActiveLibrary[Framework](/categories/framework)

rollun-com/rollun-datahandler
=============================

Rollun zend-expressive skeleton. Begin developing applications in seconds!

4.0.2(4y ago)02.1k4PHPPHP ^7.1CI failing

Since Oct 5Pushed 1y ago1 watchersCompare

[ Source](https://github.com/rollun-lc/rollun-datahandler)[ Packagist](https://packagist.org/packages/rollun-com/rollun-datahandler)[ Docs](https://github.com/rollun/rollun-datahandler)[ RSS](/packages/rollun-com-rollun-datahandler/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (10)Dependencies (11)Versions (35)Used By (0)

rollun-datahandler
==================

[](#rollun-datahandler)

Библиотека `rollun-datahandler` расширяет стандартные библиотеки [`zendframework\zend-filter`](https://github.com/zendframework/zend-filter), [`zendframework\zend-validator`](https://github.com/zendframework/zend-validator) и [`symfony\expression-language`](https://github.com/symfony/expression-language), а так же добавляет процессоры.

Фильтры
-------

[](#фильтры)

Фильтры расширяют стандартную библиотеку [`zendframework\zend-filter`](https://github.com/zendframework/zend-filter).

**Список фильтров:**

- DuplicateSymbol - заменяет повторяющиеся символи (последовательность символов) на заданный символ (по умолчанию заменяет на то что дублируется)
- Evaluation - вычисляет выражение (Expression Language) над входящей строкой и возвращет его
- RemoveDigits - удаляет все цифры в строке, оставляя после себя один пробел ('a1c' =&gt; 'a c')
- RqlReplace - фильтр, который заменяет все вхождения rql маски на заданную строку
- SortSymbols - сортирует символы в строке (не имеет значение какие символы)
- SortWords - сортирует слова в строке

Процессоры
----------

[](#процессоры)

Процессоры выполняют некоторые действие с входящим массивом. Суть процессора в том что бы он что то сделал с данными. Он может вернуть массив без изменений, при этом обработать данные и выполнить какое то действие над ними: записать в лог, отправить на почту и тд.

Пример:

```
$processor = new Concat([
    'columns' => [1, 2],
    'delimiter' => '-',
    'resultColumn' => 3,
]);

var_dump($processor->process(['a', 'b'])); // displays ['a', 'b', 'a-b']
```

**Список процессоров:**

- Concat - объединяет значения массива и записывает результат в столбец этого же массива
- Evaluation - вычисляет выражение над элементами массива (где ключ - название переменной в выражении, а значение - значение этой переменной) и записывает результат в столбец этого же массива
- FilterApplier - применяет фильтры к заданным столбцам массива

#### FilterApplier

[](#filterapplier)

Пример:

```
$processor = new FilterApplier($options);

var_dump($processor->process(['1a2b3', 'b'])); // displays ['1a2b3', '321']
```

Пример масива `$options` для FilterApplier. [Подробнее о том как задавать опции используя фабрики](#factories).

```
$options = [
    // Filters for applying
    // Key in array is a priority of filter
    'filters' => [
        0 => [
             'service' => 'digits',
        ],
        1 => [
            'service' => 'rqlReplace',
            'options' => [ // optional
                'pattern' => '123',
                'replacement' => '321',
            ],
        ],
    ],
    'argumentColumn' => 1,
    'resultColumn' => 2, // optional (will save to argumentColumn)
];
```

Все процессоры, в том числе и FilterApplier могут принимать валидатор вторым параметром. Валидатор на входе получит тот же массив что и получил на входе процессор. Если массив будет не валидный процессор обрабатывать его не будет.

```
$validator = new EmailAddress();
$processor = new FilterApplier($options, $validator);

var_dump($processor->process(['1a2b3', '123'])); // displays ['1a2b3', 'b']
```

Для корректной работы валидатора, лучше использовать ArrayAdapter декоратор. Он применяет валидатор для заданого. поля/полей

```
$validator = ArrayAdapter([
    'columnsToValidate' => [1, 2],
    'validator' => 'digits',
]);
$processor = new FilterApplier($options, $validator);

var_dump($processor->process(['1a2b3', '123'])); // displays ['1a2b3', '321']
```

Валидаторы
----------

[](#валидаторы)

Валидаторы расширяют стандартную библиотеку [`zendframework\zend-validator`](https://github.com/zendframework/zend-validator).

Список валидаторов:

- ArrayAdapter - валидирует заданные столбцы массива

#### ArrayAdapter

[](#arrayadapter)

```
$array1 = ['abcd', '123'];
$array2 = ['321', '123'];

$validator = new ArrayValidator([
    'columnsToValidate' => [1, 2],
    'validator' => 'digits',
]);

var_dump($validator->isValid($array1)); // false
var_dump($validator->isValid($array2)); // true
```

Если для использования валидатора нужны дополнительные опции, их можна передать через `'validatorOptions'` ключ. [Подробнее о том как задавать опции используя фабрики](#factories).

```
$validator = new ArrayValidator([
    'columnsToValidate' => [1, 2],
    'validator' => 'inArray',
    'validatorOptions' => [
        'haystack' => $array2
    ],
]);

var_dump($validator->isValid($array2)); // false
```

Язык выражений (Expression Language)
------------------------------------

[](#язык-выражений-expression-language)

Расширение до библиотеки [`symfony\expression-language`](https://github.com/symfony/expression-language). Компонент ExpressionLanguage может компилировать и вычислять выражения.

Пример:

```
$expressionLanguage = new ExpressionLanguage();

var_dump($expressionLanguage->evaluate('1 + 2')); // displays 3
var_dump($expressionLanguage->compile('1 + 2')); // displays (1 + 2)

// Array for variables in expression
$values = [
    'a' => 2,
    'b' => 5,
];
var_dump($expressionLanguage->evaluate('a * b'), $values); // displays 10
var_dump($expressionLanguage->compile('a * b'), $values); // displays (2 * 5)
```

#### Expression functions

[](#expression-functions)

Callback - предоставляет возможность создание ExpressionFunction с колбэка. Такая функция может быть выполнена, но не может быть скомпилирована. При попытке компиляции выражения которое использует это функцию будет выброшено исключение.

```
$callback = function($value) {
    return $value . $value;
};
$expressionFunction = new ExpressionFunction\Callback($callback, 'foo');
$expressionLanguage = new ExpressionLanguage();
$expressionLanguage->addFunction($expressionFunction);

var_dump($expressionLanguage->evaluate("foo('a')")); // displays 'aa'
var_dump($expressionLanguage->compile("foo('a')")); // exception will be thrown
```

#### Expression function providers

[](#expression-function-providers)

PluginExpressionFunctionProvider - предоставляет возможность создание ExpressionFunctionProvider с AbstractPluginManager, указав список сервисов и вызываемый метод.

```
$pluginManager = new FilterPluginManager(new ServiceManager());
$services = ['digits', 'stringTrim'];
$expressionFunctionProvider = new PluginExpressionFunctionProvider($pluginManager, $services, 'filter');
$expressionLanguage = new ExpressionLanguage();
$expressionLanguage->registerProvider($expressionFunctionProvider);

var_dump($expressionLanguage->evaluate("digits('123abc')")); // displays '123'
var_dump($expressionLanguage->compile("stringTrim('   ad   ')")); //displays 'ad'
```

Factories
---------

[](#factories)

Процессоры, валидаторы и фильтры (далее 'плагины') могут бить созданы как с помощью плагин менеджера,

```
$filterPluginManager = FilterPluginManager(new ServiceManager());
// Create filter using filter plugin options
$filter = $filterPluginManager->get('pregReplace', [
   'pattern' => '/aaa/',
   'replacement' => 'a',
]);

var_dump(get_class($filter)); // Zend\Filter\PregReplace
```

так и с непосредственно через контейнер.

```
$container = new ServiceManager();
$container->setService('config', [
    'filters' => [
        'abstract_factory_config' => [
            SimpleFilterAbstractFactory::class => [
                'pregReplaceFilter' => [
                    'class' => PregReplace::class,
                    'options' => [
                        'pattern' => '/aaa/',
                        'replacement' => 'a',
                    ],
                ]
            ]
        ]
    ]
]);

$filterPluginManager = FilterPluginManager($container);
$filter = $filterPluginManager->get('pregReplace');

var_dump(get_class($filter)); // Zend\Filter\PregReplace
```

Если конфигурации для плагина заданы и в конфигах контейнера и через $options при создание через плагин менеджер, то они не должны конфликтовать, иначе будет выброшено исключение.

```
$container = new ServiceManager();
$container->setService('config', [
    'filters' => [
        'abstract_factory_config' => [
            SimpleFilterAbstractFactory::class => [
                'pregReplaceFilter' => [
                    'class' => PregReplace::class,
                    'options' => [
                        'pattern' => '/aaa/',
                        'replacement' => 'a',
                    ],
                ]
            ]
        ]
    ]
]);
$filterPluginManager = FilterPluginManager($container);

// Will be thrown exception
$filter = $filterPluginManager->get('pregReplace', [
   'pattern' => '/aaa/',
   'replacement' => 'a',
]);
```

Пример hendler-а
----------------

[](#пример-hendler-а)

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 65.8% 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 ~48 days

Total

28

Last Release

1527d ago

Major Versions

1.0.3 → 2.0.02019-12-14

2.2.1 → 3.0.02021-03-28

3.0.1 → 4.0.02021-10-27

3.0.2 → 4.0.22021-12-12

PHP version history (2 changes)1.0.0PHP ^7.0

2.1.2PHP ^7.1

### Community

Maintainers

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

---

Top Contributors

[![victorynox](https://avatars.githubusercontent.com/u/17138585?v=4)](https://github.com/victorynox "victorynox (48 commits)")[![Vict0rynox](https://avatars.githubusercontent.com/u/8139419?v=4)](https://github.com/Vict0rynox "Vict0rynox (7 commits)")[![AndriiDudnyk](https://avatars.githubusercontent.com/u/42805443?v=4)](https://github.com/AndriiDudnyk "AndriiDudnyk (6 commits)")[![oblikov](https://avatars.githubusercontent.com/u/58328861?v=4)](https://github.com/oblikov "oblikov (5 commits)")[![rollun-com](https://avatars.githubusercontent.com/u/25004261?v=4)](https://github.com/rollun-com "rollun-com (3 commits)")[![maria-rollun](https://avatars.githubusercontent.com/u/85940777?v=4)](https://github.com/maria-rollun "maria-rollun (2 commits)")[![lasgrate](https://avatars.githubusercontent.com/u/18899069?v=4)](https://github.com/lasgrate "lasgrate (1 commits)")[![artemka-debug](https://avatars.githubusercontent.com/u/60359843?v=4)](https://github.com/artemka-debug "artemka-debug (1 commits)")

---

Tags

composer-libraryphp

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

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

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

###  Alternatives

[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M464](/packages/pimcore-pimcore)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.1k16.8k](/packages/prestashop-prestashop)[oro/platform

Business Application Platform (BAP)

642140.7k104](/packages/oro-platform)[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1175.2k](/packages/rcsofttech-audit-trail-bundle)

PHPackages © 2026

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