This is a really simple and lightweight php package for developing event based software
composer require mhndev/event
Event::bind('order.payed',function($order){
//do some cool stuf here
});
class MyClass {
public function __invoke($order) {
//do something here
}
}
$myObject = new MyClass;
Event::bind('order.payed', $myObject($order));
// pass $order object as second argument
Event::trigger('order.payed', $order);
Binding an observer for a specific event on a model.
User::addObserver('before_update', function($driver){
});
Firing an Event on a model object.
Active Record Pattern
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
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;
}
}
-implement tests