} private function findUserById($id) { if (!isset($this->users[$id])) { // here would normally be a database call or something $this->users[$id] = new User(); $this->map->add($this->users[$id]); } return $this->users[$id]; } } class MyEventHandler { public function onChangeEmail(DomainObjectChanged $event) { echo "E-Mail changed from " . $event->oldEmail . " to " . $event->email . "\n"; } } // 1. Setup the Library with InMemory Handlers $messageBus = new InMemoryEventMessageBus(); $identityMap = new SimpleIdentityMap(); $queue = new EventProviderQueue($identityMap); $commandBus = new DirectCommandBus(array(new EventMessageHandlerFactory($messageBus, $queue))); // 2. Register a command service and an event handler $userService = new UserService($identityMap, $messageBus); $someEventHandler = new MyEventHandler(); $commandBus->register('MyApp\\ChangeEmailCommand', $userService); $messageBus->register($someEventHandler); // 3. Invoke command! $commandBus->handle(new ChangeEmailCommand(array('id' => 1234, 'email' => '*****@*****.**'))); $commandBus->handle(new ChangeEmailCommand(array('id' => 1234, 'email' => '*****@*****.**')));
} class String { public $value; } class Slugify extends DefaultCommand { public $string; } class Lower extends DefaultCommand { public $string; } class Ucfirst extends DefaultCommand { public $string; } class RemoveNonAscii extends DefaultCommand { public $string; } $commandBus = new DirectCommandBus(); $stringService = new StringManipulation($commandBus); $commandBus->register('MyApp\\Slugify', $stringService); $commandBus->register('MyApp\\Lower', $stringService); $commandBus->register('MyApp\\Ucfirst', $stringService); $commandBus->register('MyApp\\RemoveNonAscii', $stringService); $string = new String(); $string->value = isset($argv[1]) ? $argv[1] : "Hello World!"; $commandBus->handle(new Slugify(array("string" => $string)));