PHPackages                             rezzza/domain-event - 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. rezzza/domain-event

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

rezzza/domain-event
===================

Help apps to be more domain event friendly

v0.1(10y ago)72171MITPHPPHP &gt;=5.5.9

Since Mar 17Pushed 9y ago3 watchersCompare

[ Source](https://github.com/rezzza/domain-event)[ Packagist](https://packagist.org/packages/rezzza/domain-event)[ RSS](/packages/rezzza-domain-event/feed)WikiDiscussions master Synced 3w ago

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

Library to help our apps to be domain event friendly without using EventStore at first.

[![Build Status](https://camo.githubusercontent.com/cd2148181da382c9b56334ab874fc99aa644674a0511eede671b4d845904b813/68747470733a2f2f7472617669732d63692e6f72672f72657a7a7a612f646f6d61696e2d6576656e742e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/rezzza/domain-event)

Why ?
=====

[](#why-)

Because we did not find any library that deal with events in an asynchronous way without EventStore. And domain events are helpful even without EventStore, to start defining boundaries between your bounded contexts.

Supported event buses
=====================

[](#supported-event-buses)

- Symfony Event dispatcher : sync
- Redis : async

Example
=======

[](#example)

[See detailled quickstart](examples/quickstart.php)

To run example

```
php examples/redis-worker.php
php examples/quickstart.php

```

In a fullstack way the best option is to track change in your repository

```
class ORMBookingRepository extends ORMAggregateRootRepository implements BookingRepository
{
    public function find($bookingId)
    {
        $this->getInternalRepository->find($bookingId)
    }

    public function save(Booking $booking)
    {
        $this->getManager()->persist($booking);
        $this->getManager()->flush();
        $this->track($booking);
    }
}

$repository = new ORMBookingRepository(
    new ManagerRegistry,
    'My\FQCN\Booking',
    new ChangeTracker(
        new LoggerEventBus(
            $logger,
            new CompositeEventBus([
                new SymfonyEventBus($eventDispatcher),
                new RedisEventBus($redis, 'booking')
            ])
        )
    )
);
```

EventDispatcher debug
=====================

[](#eventdispatcher-debug)

To debug your own event dispatcher with Symfony, we add a CLI for you. You should register it as a service and use the `--service-id` option.

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 88.9% 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

Unknown

Total

1

Last Release

3751d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/245494?v=4)[Timothée Barray](/maintainers/tyx)[@tyx](https://github.com/tyx)

---

Top Contributors

[![tyx](https://avatars.githubusercontent.com/u/245494?v=4)](https://github.com/tyx "tyx (16 commits)")[![gmorel](https://avatars.githubusercontent.com/u/2279794?v=4)](https://github.com/gmorel "gmorel (1 commits)")[![shouze](https://avatars.githubusercontent.com/u/54712?v=4)](https://github.com/shouze "shouze (1 commits)")

### Embed Badge

![Health badge](/badges/rezzza-domain-event/health.svg)

```
[![Health](https://phpackages.com/badges/rezzza-domain-event/health.svg)](https://phpackages.com/packages/rezzza-domain-event)
```

###  Alternatives

[symfony/lock

Creates and manages locks, a mechanism to provide exclusive access to a shared resource

514135.1M626](/packages/symfony-lock)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.6k38.2k](/packages/matomo-matomo)[phpro/soap-client

A general purpose SoapClient library

8895.9M52](/packages/phpro-soap-client)[ecotone/ecotone

Enterprise architecture layer for Laravel and Symfony — CQRS, Event Sourcing, Durable Workflows (Sagas, Orchestrators), Projections, and Outbox messaging via PHP attributes.

562565.8k42](/packages/ecotone-ecotone)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

749284.3k35](/packages/civicrm-civicrm-core)[illuminate/broadcasting

The Illuminate Broadcasting package.

7126.9M203](/packages/illuminate-broadcasting)

PHPackages © 2026

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