public function listen($eventName, EventListener $eventListener = null)
{
if (!$this->isString($eventName) || $this->str($eventName)->length() == 0) {
throw new EventManagerException(EventManagerException::INVALID_EVENT_NAME);
}
if ($this->isNull($eventListener)) {
$eventListener = new EventListener();
}
$eventListeners = $this->events->key($eventName, [], true);
$eventListeners[] = $eventListener;
$this->events->key($eventName, $eventListeners);
return $eventListener;
}
/** * binds the listeners */ public function bind() { $this->eventManager->listen(Compiler\Event\ExpressionBeforeCompile::EVENT_NAME)->handler(new ExpressionListener($this->bindOnExpressions))->method('beforeCompile'); $this->eventManager->listen(Compiler\Event\StatementBeforeCompile::EVENT_NAME)->handler(new StatementListener($this->bindOnStatements))->method('beforeCompile'); $this->eventManager->listen(Compiler\Event\ScalarBeforeCompile::EVENT_NAME)->handler(new ScalarListener($this->bindOnScalars))->method('beforeCompile'); }