Last active
August 29, 2015 14:22
-
-
Save im-denisenko/14604b76fc6a02ded99d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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