An open API service indexing awesome lists of open source software.

https://github.com/phpdevcommunity/psr14-event-dispatcher

This library provides an easy-to-use implementation of a PSR-14 event dispatcher, allowing you to manage event-driven functionality in your PHP applications.
https://github.com/phpdevcommunity/psr14-event-dispatcher

Last synced: 9 months ago
JSON representation

This library provides an easy-to-use implementation of a PSR-14 event dispatcher, allowing you to manage event-driven functionality in your PHP applications.

Awesome Lists containing this project

README

          

# PSR-14 Event Dispatcher

This library provides an easy-to-use implementation of a PSR-14 event dispatcher, allowing you to manage event-driven functionality in your PHP applications.

## Installation

Make sure to include the library in your `composer.json` or install it directly:

```bash
composer require phpdevcommunity/psr14-event-dispatcher
```

## Creating an Event

To create a custom event, extend the `Event` class provided by the library:

```php
object = $object;
}

/**
* Get the associated object.
*
* @return object
*/
public function getObject(): object
{
return $this->object;
}
}
```

## Creating a Listener

A listener class handles the event logic. It should implement an `__invoke` method that accepts the event as a parameter:

```php
getObject();

if ($object instanceof User) {
// Perform actions with the User object
}
}
}
```

## Usage

To use the event dispatcher, register your listeners with a `ListenerProvider` and dispatch events as needed:

```php
addListener(PreCreateEvent::class, new UserListener());

// Create the event dispatcher with the listener provider
$dispatcher = new \PhpDevCommunity\Listener\EventDispatcher($listenerProvider);

// Dispatch the event after saving a user to the database
$dispatcher->dispatch(new PreCreateEvent($user));
```

**Note**: When the `PreCreateEvent` is dispatched, `UserListener` will be automatically invoked if the event matches its type.

## Example Use Case

Suppose you have a `User` entity that requires additional logic to be executed after being persisted to the database, such as sending a welcome email or logging activity. You can use the `PreCreateEvent` and `UserListener` to encapsulate this behavior, keeping your code clean and following the event-driven design pattern.

## License

This library is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.