Skip to content
This repository has been archived by the owner on May 10, 2024. It is now read-only.

atournayre/entities-events-bundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Atournayre Entities Events Bundle

This bundle provides a way to dispatch events when entities are created, updated or deleted using Doctrine ORM events and Symfony EventDispatcher.

Requirements

Symfony ^6 || ^7

PHP >=8.2

Install

Use Composer to install the package:

Composer

composer require atournayre/entities-events-bundle

Register bundle

// config/bundles.php

return [
    // ...
    Atournayre\Bundle\EntitiesEventsBundle\AtournayreEntitiesEventsBundle::class => ['all' => true],
    // ...
]

Install listeners

php bin/console atournayre:entities-events:generate-listeners

Usage example

Update your entity

use Atournayre\Bundle\EntitiesEventsBundle\Collection\EventCollection;
use Atournayre\Bundle\EntitiesEventsBundle\Contracts\HasEventsInterface;

// Implements HasEventsInterface
class YourEntity implements HasEventsInterface
{
  // Use EventsTrait to implement HasEventsInterface
  use EventsTrait;
  
  public function __construct()
  {
    // Initialize the collection of events
    $this->eventCollection = new EventCollection();
  }
  
  public function doSomething(): void
  {
    // Do something here
    // Then dispatch an event
    $this->addEvent(new YourEvent($this));
  }
}

Create an event

use Symfony\Contracts\EventDispatcher\Event;

class YourEvent extends Event
{
  public function __construct(
    public readonly YourEntity $entity
  ) {}
}

Handle an event

use Symfony\Component\EventDispatcher\Attribute\AsEventListener;

#[AsEventListener]
class YourEventListener
{
  public function __invoke(YourEvent $event): void
  {
    // Do something here
  }
}

That's all, the bundle will do the rest.

Contribute

Contributions to the package are always welcome!

License

All contents of this package are licensed under the MIT license.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages