ruiadr/event

Système d'événements simple permettant la communication découplée entre composants.

2.1.3 2025-06-24 11:25 UTC

This package is auto-updated.

Last update: 2025-06-24 09:26:09 UTC


README

pipeline status

Quality Gate Status Coverage

Reliability Rating Security Rating Maintainability Rating

Technical Debt Vulnerabilities

Système d'événements simple permettant la communication découplée entre composants.

⭐ Utilisation

Créer un événement personnalisé

use Ruiadr\Event\Event;

final class MyEvent extends Event
{
}

Créer un dispatcher personnalisé

use Ruiadr\Event\Dispatcher;

final class MyDispatcher extends Dispatcher
{
    final public const ON_SET_DATA_EVENT = 'SET_DATA';

    public function setData(array $data): self
    {
        $this->dispatchEvent(self::ON_SET_DATA_EVENT, new MyEvent($data));

        return $this;
    }
}

Créer un listener personnalisé

use Ruiadr\Event\Listener;

final class MyListener
{
    private ?array $data = null;

    public function __construct(private readonly MyDispatcher $dispatcher)
    {
        $this->dispatcher->addEventListener(MyDispatcher::ON_SET_DATA_EVENT,
            function (MyEvent $event) {
                $this->data = $event->getData();
            }
        );
    }

    public function setData(array $data): self
    {
        $this->dispatcher->setData($data);

        return $this;
    }

    public function getData(): ?array
    {
        return $this->data;
    }
}

Exemple d'utilisation

$dispatcher = new MyDispatcher();

$listener1 = new MyListener($dispatcher);
$listener2 = new MyListener($dispatcher);

$value = ['key' => 'value'];

$listener1->setData($value);

$listener1->getData(); // Retourne ['key' => 'value']
$listener2->getData(); // Retourne aussi ['key' => 'value']

⭐ Tests

Lancer les tests unitaires :

php vendor/bin/phpunit

Lancer les tests unitaires avec des statistiques de couverture du code :

La commande aura pour effet de générer un fichier coverage.xml qui pourra ensuite être utilisé par SonarCloud, et un répertoire coverage contenant le HTML permettant de consulter le compte rendu depuis son navigateur.

php vendor/bin/phpunit --log-junit=tests.xml --coverage-clover=coverage.xml --coverage-html coverage

xdebug doit être installé et activé. Exemple avec un conteneur Docker :

# /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

zend_extension=xdebug.so

[xdebug]
xdebug.mode=coverage