Skip to content

Instantly share code, notes, and snippets.

@im-denisenko
Last active August 29, 2015 14:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save im-denisenko/14604b76fc6a02ded99d to your computer and use it in GitHub Desktop.
Save im-denisenko/14604b76fc6a02ded99d to your computer and use it in GitHub Desktop.
<?php
class RusyaEventSubscriber implements EventSubscriberInterface
{
/**
* @param MessageParser
*/
protected $parser;
/**
* @param EventDispatcher
*/
protected $dispatcher;
/**
* @param MessageParser $parser
* @param EventDispatcher $dispatcher
*/
public function __construct(MessageParser $parser, EventDispatcher $dispatcher)
{
$this->parser = $parser;
$this->dispatcher = $dispatcher;
}
/**
* {@inheritdoc}
*/
public function getSubscribedEvents()
{
return [
'driver_message' => 'onDriverMessage',
];
}
/**
* @param DriverMessageEvent $event
*/
public function onDriverMessage(DriverMessageEvent $event)
{
$message = $event->getMessage();
$parsedMessage = $this->parser->parse($message);
foreach ($parsedMessage->extractEvents() as $event) {
$this->dispatcher->dispatch($event);
}
}
}
class CarEventSubscriber implements EventSubscriberInterface
{
/**
* @var Car
*/
protected $car;
/**
* @param Car $car
*/
public function __construct(Car $car)
{
$this->car = $car;
}
/**
* {@inheritdoc}
*/
public function getSubscribedEvents()
{
return [
'rotate_direction_request' => 'onRotateDirectionRequest',
];
}
/**
* @param RotateDirectionEvent $event
*/
public function onRotateDirectionRequest(RotateDirectionEvent $event)
{
$degree = $event->getDegree();
$engine = $this->car->getEngine();
if ($engine->canRotateDirection()) {
$engine->rotateDirection($degree);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment