protected function _loadListener($name)
{
if (!isset($this->_listenerInstances[$name])) {
$config = $this->config('listeners.' . $name);
if (empty($config)) {
throw new ListenerNotConfiguredException(sprintf('Listener "%s" is not configured', $name));
}
$className = App::classname($config['className'], 'Listener', 'Listener');
if (empty($className)) {
throw new MissingListenerException('Could not find listener class: ' . $config['className']);
}
$this->_listenerInstances[$name] = new $className($this->_controller);
unset($config['className']);
$this->_listenerInstances[$name]->config($config);
$this->_eventManager->on($this->_listenerInstances[$name]);
if (is_callable([$this->_listenerInstances[$name], 'setup'])) {
$this->_listenerInstances[$name]->setup();
}
}
return $this->_listenerInstances[$name];
}