1. Go to this page and download the library: Download heybigname/event-dispatcher library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use BigName\EventDispatcher\Dispatcher;
class RegisterMemberHandler implements Handler
{
private $dispatcher;
public function __construct(Dispatcher $dispatcher)
{
$this->dispatcher = $dispatcher;
}
}
namespace Domain\Accounts\Events;
use BigName\EventDispatcher\Event;
class MemberWasRegistered implements Event
{
private $member;
public function __construct($member)
{
$this->member = $member;
}
public function getMember()
{
return $this->member;
}
public function getName()
{
return 'MemberWasRegistered';
}
}
namespace Domain\Accounts\EventListeners;
use BigName\EventDispatcher\Listener;
use BigName\EventDispatcher\Event;
class WelcomeNewlyRegisteredMemberListener implements Listener
{
private $mailer
public function __construct($mailer)
{
$this->mailer = $mailer;
}
public function handle(Event $event)
{
// Do something with the event
}
}
use BigName\EventDispatcher\Dispatcher;
use Domain\Accounts\Events\MemberWasRegistered;
use Domain\Accounts\EventListeners\WelcomeNewlyRegisteredMemberListener;
// Listening for event
$mailer = // Some mail package...
$listener = new WelcomeNewlyRegisteredMemberListener($mailer);
$dispatcher = new Dispatcher;
$dispatcher->addListener('MemberWasRegistered', $listener);
// Dispatching event
$member = // A wild member appeared..
$event = new MemberWasRegistered($member);
$dispatcher->dispatch($event);
use Illuminate\Container\Container;
use BigName\EventDispatcher\Dispatcher;
use BigName\EventDispatcher\Containers\LaravelContainer;
$container = new LaravelContainer(new Container);
$dispatcher = new Dispatcher($container);
$dispatcher->addLazyListener('MemberWasRegistered', 'Domain\Accounts\EventListeners\WelcomeNewlyRegisteredMemberListener');
use BigName\EventDispatcher\Dispatcher;
use Domain\Accounts\MemberWasRegistered;
use Domain\Achievements\MemberEarnedAchievement;
$member = ...;
$achievement = ...;
$events = [
new MemberWasRegistered($member),
new MemberEarnedAchievement($member, $achievement)
];
$dispatcher = new Dispatcher;
$dispatcher->dispatch($events);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.