PHPackages                             webbeaver777/command-processor - 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. webbeaver777/command-processor

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

webbeaver777/command-processor
==============================

Библиотека для обработки и маршрутизации команд в PHP проектах

1.0.6(8mo ago)023MITPHPPHP ^8.0

Since Sep 15Pushed 8mo agoCompare

[ Source](https://github.com/webBeaver777/CommandProcessor)[ Packagist](https://packagist.org/packages/webbeaver777/command-processor)[ RSS](/packages/webbeaver777-command-processor/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (8)Used By (0)

CommandProcessor
================

[](#commandprocessor)

[![PHP](https://camo.githubusercontent.com/2f6f9af2e917cbf5786673e8e4ed8d0d9b29be6131327a992063e69136a93411/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e302532422d626c7565)](https://camo.githubusercontent.com/2f6f9af2e917cbf5786673e8e4ed8d0d9b29be6131327a992063e69136a93411/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e302532422d626c7565)[![License](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)

CommandProcessor — современная PHP-библиотека для обработки текстовых команд (например, для CRM, чат-ботов, интеграций). Поддерживает работу вне фреймворка и интеграцию с Laravel.

Возможности
-----------

[](#возможности)

- Простая регистрация и обработка текстовых команд через единый CommandProcessor
- Гибкая архитектура: легко расширять новыми обработчиками и DTO
- Интеграция с Laravel (ServiceProvider, artisan-команды)
- PSR-4 автозагрузка
- Логирование команд через PSR-3 (Monolog)
- Покрытие тестами всех бизнес-команд

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

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

```
composer require webbeaver777/command-processor
```

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

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

```
require __DIR__.'/vendor/autoload.php';

use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Webbeaver\CommandProcessor\Adapters\InMemoryDealRepository;
use Webbeaver\CommandProcessor\Core\CommandProcessor;
use Webbeaver\CommandProcessor\DTO\CommandContext;
use Webbeaver\CommandProcessor\DTO\Deal;
use Webbeaver\CommandProcessor\Handlers\AcceptedCommandHandler;
use Webbeaver\CommandProcessor\Handlers\ContactCommandHandler;
use Webbeaver\CommandProcessor\Handlers\ReasonSetCommandHandler;
use Webbeaver\CommandProcessor\Handlers\ReasonShowCommandHandler;

// Настраиваем логгер PSR-3 (Monolog)
$logger = new Logger('test');
$logger->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));

// Создаём репозиторий и тестовую сделку
$dealId = 42;
$repository = new InMemoryDealRepository();
$deal = new Deal($dealId);
$repository->saveDeal($deal);

// Создаём CommandProcessor
$processor = new CommandProcessor($repository, $logger);

// Регистрируем обработчики команд
$processor->registerHandler(new AcceptedCommandHandler($repository));
$processor->registerHandler(new ContactCommandHandler());
$processor->registerHandler(new ReasonSetCommandHandler($repository));
$processor->registerHandler(new ReasonShowCommandHandler($repository));

// Формируем контекст с параметрами
$context = new CommandContext(['deal' => $deal]);
$context->repository = $repository; // для некоторых обработчиков

// Обрабатываем команды
$processor->process('/принято 500 офис', $context);
$deal->contact = 'Иван Иванов';
$processor->process('/контакт', $context);
$processor->process('/причина_закрытия удалена транзакция', $context);
$processor->process('/причина', $context);

// Форматированный вывод состояния сделки
function formatDeal(Deal $deal) {
    echo "\n================= Состояние сделки =================\n";
    echo "ID: " . $deal->id . "\n";
    echo "Contact: " . ($deal->contact ?? '-') . "\n";
    echo "Properties:" . PHP_EOL;
    if (!empty($deal->properties)) {
        foreach ($deal->properties as $key => $value) {
            echo "  [$key] => $value\n";
        }
    } else {
        echo "  (нет)\n";
    }
    echo "Messages:" . PHP_EOL;
    if (!empty($deal->messages)) {
        foreach ($deal->messages as $msg) {
            echo "  - $msg\n";
        }
    } else {
        echo "  (нет)\n";
    }
    echo "===================================================\n\n";
}
formatDeal($deal);
```

**Результат:**

- Все команды обрабатываются через единый CommandProcessor.
- Состояние сделки (ID, контакт, свойства, сообщения) выводится в удобном виде.
- Можно легко расширять обработчики и DTO под свои задачи.

Стандартные команды
-------------------

[](#стандартные-команды)

- `/принято 500 офис` — устанавливает сумму и офис для сделки
- `/контакт` — выводит контакт клиента
- `/причина_закрытия ...` — устанавливает причину закрытия
- `/причина` — выводит причину закрытия

Расширение
----------

[](#расширение)

- Для новой команды создайте свой DTO и обработчик, зарегистрируйте через CommandProcessor.
- Не требуется менять ядро или фабрику.

Интеграция с Laravel
--------------------

[](#интеграция-с-laravel)

- Зарегистрируйте обработчики в сервис-провайдере.
- Используйте любой PSR-3 логгер (например, Monolog).

Требования
----------

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

- PHP 8+
- psr/log

Структура
---------

[](#структура)

- `src/Webbeaver/CommandProcessor/DTO` — DTO-команды
- `src/Webbeaver/CommandProcessor/Handlers` — Обработчики
- `src/Webbeaver/CommandProcessor/Adapters` — Адаптеры
- `src/Webbeaver/CommandProcessor/Core` — Ядро, логгер
- `src/Webbeaver/CommandProcessor/Contracts` — Интерфейсы

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

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

Для запуска тестов используйте:

```
vendor/bin/phpunit
```

---

Пакет легко расширяется, не зависит от Laravel, соответствует PSR-12.

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance61

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

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

7

Last Release

245d ago

### Community

Maintainers

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

---

Top Contributors

[![D-Bobrikov](https://avatars.githubusercontent.com/u/132194866?v=4)](https://github.com/D-Bobrikov "D-Bobrikov (32 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/webbeaver777-command-processor/health.svg)

```
[![Health](https://phpackages.com/badges/webbeaver777-command-processor/health.svg)](https://phpackages.com/packages/webbeaver777-command-processor)
```

###  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)
