PHPackages                             suddhah/userlist-handler - 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. suddhah/userlist-handler

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

suddhah/userlist-handler
========================

Laravel package for processing strings of various formats

v1.1.2(1y ago)05MITPHPPHP ^8.2

Since Sep 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/suddhah/userlist-handler)[ Packagist](https://packagist.org/packages/suddhah/userlist-handler)[ Docs](https://github.com/suddhah/userlist-handler)[ RSS](/packages/suddhah-userlist-handler/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (5)Used By (0)

Laravel UserList Handler
========================

[](#laravel-userlist-handler)

Пакет который обрабатывает строки различных форматов. Опционально поддерживает интеграцию с Laravel.

Минимальные требования
----------------------

[](#минимальные-требования)

- PHP 8.2
- Laravel 11.0 и выше

Установка
---------

[](#установка)

```
composer require suddhah/userlist-handler
```

Использование
-------------

[](#использование)

##### Доступны три реализации парсера:

[](#доступны-три-реализации-парсера)

Каждая из которых возвращает массив с обработанными данными, либо EmptyDataException / InvalidFormatException

JSON: `Suddhah\UserListHandler\Parsers\JsonParser`

CSV: `Suddhah\UserListHandler\Parsers\CsvParser`

XML: `Suddhah\UserListHandler\Parsers\XmlParser`

##### Пример использования:

[](#пример-использования)

```
// Данные для парсинга
$data = '...';

// Создаем реестр с парсерами
$parserRegistry = ParserFactory::createParserRegistry();

// Создаем экземпляр парсера, передаем ему экземпляр детектора для проверки формата строки
$userListHandler = new UserListHandler($parserRegistry);

// Запускаем парсер
// 1. Если нужно явно указать тип строки, можно передать константу (TYPE_JSON, TYPE_CSV, TYPE_XML)
$result = $userListHandler->run($data, UserListHandler::TYPE_CSV);
// 2. Если имеется доступ к имени файла, можно воспользоваться хелпером detect_type_by_name()
$result = $userListHandler->run($data, detect_type_by_name($filename));
```

##### Пример использования в контексте Laravel через фасад UserListFacade:

[](#пример-использования-в-контексте-laravel-через-фасад-userlistfacade)

```
UserListFacade::run($data, UserlistHandler::TYPE_JSON);
```

##### Пример входящих данных

[](#пример-входящих-данных)

```
{
  "users": [
    {
      "id": 1,
      "name": "Иван Петров",
      "email": "ivan@example.com",
      "age": 30
    },
    ...
  ]
}
```

```
id,name,email,age
1,Иван Петров,ivan@example.com,30
2,Мария Сидорова,maria@example.com,25
3,Алексей Иванов,alexey@example.com,35
```

```

        1
        Иван Петров
        ivan@example.com
        30

    ...

```

##### Возвращаемые данные:

[](#возвращаемые-данные)

```
array:3 [
  0 => array:4 [
    "id" => 1
    "name" => "Иван Петров"
    "email" => "ivan@example.com"
    "age" => 30
  ]
  1 => array:4 [
    "id" => 2
    "name" => "Мария Сидорова"
    "email" => "maria@example.com"
    "age" => 25
  ]
  2 => array:4 [
    "id" => 3
    "name" => "Алексей Иванов"
    "email" => "alexey@example.com"
    "age" => 35
  ]
]
```

Расширение своими реализациями:
-------------------------------

[](#расширение-своими-реализациями)

- Создать свою реализацию интерфейса ParserInterface в директории Parsers.

```
class YamlParser implements ParserInterface
{
    public function parse(string $data): array
    {
        // Логика для парсинга YAML
    }
}
```

- Регистрация нового парсера.

```
ParserFactory::registerParser('yaml', new YamlParser());
```

- Вызов нового парсера.

```
// 1. Если нужно явно указать тип строки, передать установленное ранее значение для типа в ParserFactory::registerParser()
$result = $userListHandler->run($data, 'yaml');
// 2. Если имеется доступ к имени файла, можно воспользоваться хелпером detect_type_by_name()
$result = $userListHandler->run($data, detect_type_by_name($filename));
```

Тестирование
------------

[](#тестирование)

Выполнить команду `composer install --dev`, а затем запустить одну из следующих команду из корня данного пакета:

```
composer test
```

PHP CS Fixer
------------

[](#php-cs-fixer)

Используется [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)для автоматического форматирования кода согласно стандартам PHP.

```
composer lint
```

Соблюдаемые принципы
--------------------

[](#соблюдаемые-принципы)

```
S - Single Responsibility Principle: Каждый класс отвечает за свою единственную задачу — парсинг конкретного формата.
O - Open/Closed Principle: Новые парсеры могут быть добавлены без изменения существующих.
L - Liskov Substitution Principle: Все парсеры реализуют единый интерфейс и могут использоваться взаимозаменяемо.
I - Interface Segregation Principle: Интерфейс имеет всего один метод, что позволяет избежать ненужных зависимостей.
D - Dependency Inversion Principle: Класс UserListHandler зависит от абстракций (интерфейсов), а не от конкретных реализаций.

```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance36

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

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

595d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0527b741cf45d94f15c715e32fd73ffb20c28cc8a88263635f7a145ad046c696?d=identicon)[suddhah](/maintainers/suddhah)

---

Tags

laravelstring

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/suddhah-userlist-handler/health.svg)

```
[![Health](https://phpackages.com/badges/suddhah-userlist-handler/health.svg)](https://phpackages.com/packages/suddhah-userlist-handler)
```

###  Alternatives

[pragmarx/ia-str

Laravel Illuminate Agnostic Str

523.5M5](/packages/pragmarx-ia-str)[hallindavid/manny

a package of manipulators that hopefully come in useful for those of us who always forget regex when we need it (manny is short for manipulation)

38103.3k2](/packages/hallindavid-manny)[jasonlam604/stringizer

Stringizer is a PHP string manipulation library with support for method chaining and multibyte handling

35110.5k1](/packages/jasonlam604-stringizer)[madewithlove/laravel-nova-uuid-support

Adds uuid and other string identifier support to Laravel Nova

28132.9k](/packages/madewithlove-laravel-nova-uuid-support)[iteks/laravel-enum

A comprehensive Laravel package providing enhanced enum functionalities, including attribute handling, select array conversions, and fluent facade interactions for robust enum management in Laravel applications.

2516.7k](/packages/iteks-laravel-enum)[pishran/laravel-persian-string

Convert Arabic/English/etc numbers and characters to Persian numbers and characters in Laravel models.

206.7k](/packages/pishran-laravel-persian-string)

PHPackages © 2026

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