PHPackages                             chocofamilyme/restapi-model-listener - 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. [API Development](/categories/api)
4. /
5. chocofamilyme/restapi-model-listener

ActiveLabrary[API Development](/categories/api)

chocofamilyme/restapi-model-listener
====================================

Phalcon model listener

0.1.1(6y ago)04.4kBSD-3-ClausePHPPHP &gt;= 7.0.0

Since Jul 26Pushed 6y ago1 watchersCompare

[ Source](https://github.com/chocofamilyme/restapi-model-listener)[ Packagist](https://packagist.org/packages/chocofamilyme/restapi-model-listener)[ Docs](https://github.com/chocofamilyme/restapi-model-listener)[ RSS](/packages/chocofamilyme-restapi-model-listener/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (1)Dependencies (2)Versions (7)Used By (0)

Библиотека для прослушки событий моделей Phalcon
================================================

[](#библиотека-для-прослушки-событий-моделей-phalcon)

Библиотека позволяет слушать встроенные события модели и отправлять сообщения в очередь.

Требуется
---------

[](#требуется)

```
- Phalcon > 3.0.0
- chocofamilyme/pubsub > 2.*
- RestAPI

```

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

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

С помощью composer

```
composer require chocofamilyme/restapi-model-listener
```

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

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

Прикрепляем слушатель в **Events Manager** для прослушки событий моделей **Phalcon:**

```
class ServiceProvider extends AbstractServiceProvider
{
    protected $serviceName = 'eventsManager';

    public function register()
    {
        $this->di->setShared(
            $this->serviceName,
            function () {
                $eventsManager = new Manager();
                $eventsManager->attach('model', new ModelsListener());
                return $eventsManager;
            }
        );
    }
}
```

Прослушивает события `afterCreate`, `afterUpdate`, `afterDelete`. Для прослушки модель должна реализовывать интерфейс `HasEvents`

Метод `getQueueName` интерфейса должен возвращать имя очереди по имени события.

Пример:

```
class Order extends Model implements HasEvents
{
    const EVENTS = [
            'paid' => 'rahmet.order.paid',
            'created' => 'rahmet.order.created',
            'updated' => 'rahmet.order.updated'
        ];

    /**
     * @param string $eventName
     * @return string
     */
    public function getQueueName(string $eventName) : string
    {
        return self::EVENTS[$eventName];
    }
    /**
     * @param Model $model
     * @return array
     */
    public function getAttributes(Model $model): array
    {
        return [
            'id'        => $model->getId(),
            'custom'    => 'some-custom'
        ];
    }

    //other logic..
}
```

По умолчанию в payload отправляются все поля модели. Для выборочной отправки или добавления дополнительных полей реализуем в модели интерфейс `SerializerInterface` библиотеки **Chocofamily Pubsub**. Метод `getAttributes` принимает в качестве аргумента модель, должен возвращать массив с полями для отправки в очередь.

Можно создать свой кастомный сериалайзер и внедрить его в слушатель. В таком случае этот сериалайзер будет применим для всех прослушиваемых моделей:

```
public function register()
    {
        $this->di->setShared(
            $this->serviceName,
            function () {
                $serializer = new CustomSerializer();
                $listener = new ModelsListener();
                $listener->setObjectSerializer($serializer);

                $eventsManager = new Manager();
                $eventsManager->attach('model', $listener);
                return $eventsManager;
            }
        );
    }
```

Соответственно, данный сериалайзер должен реализовывать `SerializerInterface`, либо наследоваться от базового `ObjectSerializer` библиотеки **Chocofamily Pubsub**.

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 78.6% 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 ~1 days

Total

2

Last Release

2523d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/42729426?v=4)[Chocofamily](/maintainers/chocofamilyme)[@chocofamilyme](https://github.com/chocofamilyme)

---

Top Contributors

[![makhambetov](https://avatars.githubusercontent.com/u/25185744?v=4)](https://github.com/makhambetov "makhambetov (11 commits)")[![AidynMakhataev](https://avatars.githubusercontent.com/u/19181566?v=4)](https://github.com/AidynMakhataev "AidynMakhataev (3 commits)")

---

Tags

chocofamily-pubsubphalconphalcon-modeleventsphalconpubsubMicroserviceeventsource

###  Code Quality

TestsCodeception

### Embed Badge

![Health badge](/badges/chocofamilyme-restapi-model-listener/health.svg)

```
[![Health](https://phpackages.com/badges/chocofamilyme-restapi-model-listener/health.svg)](https://phpackages.com/packages/chocofamilyme-restapi-model-listener)
```

###  Alternatives

[mpociot/captainhook

Add webhooks to your Laravel app.

3358.9k](/packages/mpociot-captainhook)[spatie/laravel-eventsauce

Use EventSauce in Laravel apps

12117.1k1](/packages/spatie-laravel-eventsauce)[keen-io/keen-io-bundle

Symfony Bundle for Keen IO

16490.2k](/packages/keen-io-keen-io-bundle)[mtarld/api-platform-ms-bundle

API Platform Microservice Bundle

7124.5k](/packages/mtarld-api-platform-ms-bundle)[qodenl/laravel-posthog

Laravel implementation for Posthog

3591.8k](/packages/qodenl-laravel-posthog)[there4/php-analytics-event

Send Google Analytics events from PHP

2541.5k](/packages/there4-php-analytics-event)

PHPackages © 2026

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