PHPackages                             idynsys/synced-module - 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. idynsys/synced-module

ActiveLaravel-module[Utility &amp; Helpers](/categories/utility)

idynsys/synced-module
=====================

Module for sync models

v0.1.4(2y ago)1924PHPPHP ^8.0

Since Aug 9Pushed 2y ago1 watchersCompare

[ Source](https://github.com/idynsys/kafka-tablesync)[ Packagist](https://packagist.org/packages/idynsys/synced-module)[ RSS](/packages/idynsys-synced-module/feed)WikiDiscussions dev Synced today

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

kafka-synced
============

[](#kafka-synced)

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

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

Используйте [composer](https://getcomposer.org/) для установки

```
composer req idynsys/synced-module

```

- 1. в случае возниковения проблем с зависимостями необходимо использовать ключ -W `composer req idynsys/synced-module -W`
    2. для работы пакета необходимо установить ext-kafka

Установка (общее)
-----------------

[](#установка-общее)

1. необходимо добавить в app.php

    > Ids\\Modules\\Synced\\Providers\\SyncedServiceProvider::class
2. Добавим файл конфига

    > php artisan vendor:publish --tag=synced-config
3. Запустить php artisan vendor:publish --tag=laravel-kafka-config php artisan vendor:publish --provider="Ids\\Modules\\Synced\\SyncedServiceProvider"

    После, необходимо сконфигурировать kafka.php (если не настроен или ранее mateusjunges/laravel-kafka) см. необходимые мин ENV для добавления в .env:

    > KAFKA\_BROKERS: localhost:9092 KAFKA\_CONSUMER\_GROUP\_ID: 'group'

- после настройки брокера и добавления в .env, необходимо убедиться в доступности брокера kafka по сети (для docker compose необходимо настроить общую сеть)

### Добавление модели для отправки в кафку

[](#добавление-модели-для-отправки-в-кафку)

4. Для добавления модели необходимо
    1. Добавить интерфейс SyncedModelInterface и трейт (для отслеживания изменение модели)
    2. Зарегистрировать события в конструкторе
    3. Реализовать методы:

```
   public function getRouteKey(): string; //название маршрута (используется как основной топик)
   public function getSyncedAttributes(): array; // подготовленные данные к отправке в топик
   public function getTopics(): array; //дополнительные топики

```

> где RouteKey должен определить название назначение сущности, SyncedAttributes должне вернуть массив данных передаваемый для обмена, Topics - набор топиков которые мы будем использовать для трансфера дополнительно

Полный пример

```
class User implements SyncedModelInterface
{
    use Synced;

    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
        $this->registerSyncedListeners();
    }
    /**
     * route key of model
     */
    public function getRouteKey(): string
    {
        return 'user';
    }

    /**
     * prepare attributes to recieve
     */
    public function getSyncedAttributes(): array
    {
        return $this->toArray();
    }

    /**
     * additional topics
     */
    public function getTopics(): array
    {
        return [];
    }
}

```

### Добавление consumer для чтения изменений

[](#добавление-consumer-для-чтения-изменений)

5. Для получения изменений на стороне клиента необходимо реализовать класс репозитория с интерфейсом SyncedRepositoryInterface:

```
public function createByKafka(KafkaPublishData $data);
public function updateByKafka(KafkaPublishData $data);
public function deleteByKafka(KafkaPublishData $data);

```

createByKafka - создание записи updateByKafka - обновление deleteByKafka - удаление

и сконфигурировать репозитории в файле synced.php:

```
    'repositories' => [
        'product' => 'App\Modules\Products\Repositories\ProductRepository',
        'organization' => 'App\Modules\Organizations\Repositories\OrganizationRepository',
        'application' => 'App\Modules\Applications\Repositories\ApplicationRepository',
    ],

```

Далее, достаточно просто, запустить коньсьюмер командой:

`php artisan synced:consume:entity`

- название команды можно изменить в synced.php в параметре `command-signature`

###  Health Score

24

—

LowBetter than 31% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97.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 ~13 days

Total

5

Last Release

1005d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4fa3369761b2e2b94d7d1e2bfe71639e35e0d5af517ce4e85a9cc1c9c46defbd?d=identicon)[idynsys](/maintainers/idynsys)

---

Top Contributors

[![MaximIdynsys](https://avatars.githubusercontent.com/u/141728386?v=4)](https://github.com/MaximIdynsys "MaximIdynsys (45 commits)")[![evgeny946](https://avatars.githubusercontent.com/u/109222937?v=4)](https://github.com/evgeny946 "evgeny946 (1 commits)")

### Embed Badge

![Health badge](/badges/idynsys-synced-module/health.svg)

```
[![Health](https://phpackages.com/badges/idynsys-synced-module/health.svg)](https://phpackages.com/packages/idynsys-synced-module)
```

###  Alternatives

[metaregistrar/php-dns-client

A php-only, object-oriented client that is able to read and process DNS records

299.3k](/packages/metaregistrar-php-dns-client)

PHPackages © 2026

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