https://github.com/mhndev/event
PHP EVENT SYSTEM
https://github.com/mhndev/event
event event-management event-system
Last synced: 22 days ago
JSON representation
PHP EVENT SYSTEM
- Host: GitHub
- URL: https://github.com/mhndev/event
- Owner: mhndev
- Created: 2016-07-09T17:19:01.000Z (almost 9 years ago)
- Default Branch: develop
- Last Pushed: 2017-10-03T13:59:08.000Z (over 7 years ago)
- Last Synced: 2025-04-01T02:34:18.470Z (2 months ago)
- Topics: event, event-management, event-system
- Language: PHP
- Homepage:
- Size: 5.86 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## About
This is a really simple and lightweight php package for developing event based software
## Installation
```
composer require mhndev/event
```## Sample Usage
### bind an closure to an event
```php
Event::bind('order.payed',function($order){
//do some cool stuf here
});```
### Another example
```php
class MyClass {
public function __invoke($order) {
//do something here
}
}$myObject = new MyClass;
Event::bind('order.payed', $myObject($order));
```
### trigger an event
```php
// pass $order object as second argument
Event::trigger('order.payed', $order);```
### Entity ( Model ) Observer
Binding an observer for a specific event on a model.
```php
User::addObserver('before_update', function($driver){
});
```Firing an Event on a model object.
Active Record Pattern
```php
class User
{
use \mhndev\event\ObservableTrait;
function update(array $data)
{
$user = $this;
$this->fireEvent('before_update', $this);$updatedUser = $this->update($array);
$driver->fireEvent('after_update', $user, $updatedUser);
}
}```
Data Mapper Pattern
```php
class User
{
use \mhndev\event\ObservableTrait;
}class UserRepository
{function update($user_identifier, array $data)
{
$user = $this->findByIdentifier($user_identifier);$user->buildByOptions($data);
$user->fireEvent('before_update', $user);
$updatedUser = $this->update($user);
$driver->fireEvent('after_update', $user, $updatedUser);
return $updatedUser;
}
}```
## Todos
-implement tests