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.
- Host: GitHub
- URL: https://github.com/phpdevcommunity/psr14-event-dispatcher
- Owner: phpdevcommunity
- License: mit
- Created: 2024-10-07T15:47:07.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-07T15:48:32.000Z (over 1 year ago)
- Last Synced: 2025-04-07T10:03:43.208Z (10 months ago)
- Language: PHP
- Size: 6.84 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.