PHP code example of heybigname / event-dispatcher

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/ */

    

heybigname / event-dispatcher example snippets


'BigName\EventDispatcher\Integrations\Laravel\ServiceProvider',

use BigName\EventDispatcher\Dispatcher;

class RegisterMemberHandler implements Handler
{
    private $dispatcher;

    public function __construct(Dispatcher $dispatcher)
    {
        $this->dispatcher = $dispatcher;
    }
}

$dispatcher = App::make('BigName\EventDispatcher\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);