Skip to content

Releases: WyriHaximus/php-broadcast

1.0.0

17 Dec 23:42
6193f55

Choose a tag to compare

Installation

To install via Composer, use the command below, it will automatically detect the latest version and bind it with ^.

composer require wyrihaximus/broadcast

Usage

Any package setting the following in their composer.json will have its autoloading directories and files scanned
for any classes that implements WyriHaximus\Broadcast\Contracts\Listener. Each public method with a concrete object
type hint on classes implementing WyriHaximus\Broadcast\Contracts\Listener will be registered as an event listener
for that object in the type hint.

{
  "extra": {
    "wyrihaximus": {
      "broadcast": {
        "has-listeners": true
      }
    }
  }
}

To use those automatically picked up event listeners, use the WyriHaximus\Broadcast\ContainerListenerProvider, which
needs a PSR-11 container to work.

The following example uses the dummy event and listener coming with this package:

use WyriHaximus\Broadcast\ContainerListenerProvider;
use WyriHaximus\Broadcast\Dispatcher;
use WyriHaximus\Broadcast\Dummy�vent;

$event = new Event();

(new Dispatcher(new ContainerListenerProvider($container), $logger))->dispatch($event)

Listener

The following listener is from one of my apps and listeners both on intialize and shutdown events. The logic has been
taken out, but logging is left intact to demonstracte a simple listener example.

<?php

declare(strict_types=1);

namespace WyriHaximus\Apps\WyriHaximusNet\GitHub\Ingest;

use Mammatus\LifeCycleEvents\Initialize;
use Mammatus\LifeCycleEvents\Shutdown;
use Psr\Log\LoggerInterface;
use WyriHaximus\Broadcast\Contracts\Listener;

final class Consumer implements Listener
{
    private LoggerInterface $logger;

    public function __construct(ConsumerContract $consumer, Producer $producer, LoggerInterface $logger)
    {
        $this->logger   = $logger;
    }

    public function start(Initialize $event): void
    {
        $this->logger->debug('Starting to consume ingested GitHub WebHook events');
    }

    public function stop(Shutdown $event): void
    {
        $this->logger->debug('Stopping to consume ingested GitHub WebHook events');
    }
}

1.0.0

  • Total issues resolved: 0
  • Total pull requests resolved: 20
  • Total contributors: 2

Documentation 📚,MarkDown 📝

CI 🚧,Configuration ⚙,Dependencies 📦,JSON 👨‍💼,PHP 🐘,YAML 🍄

Dependencies 📦,PHP 🐘

Dependencies 📦,JSON 👨‍💼,PHP 🐘

CI 🚧,Configuration ⚙,Dependencies 📦,JSON 👨‍💼,PHP 🐘,Source 🔮,Tests 🧪,YAML 🍄