protected function _configureOutput() { // construct configured outputs $outputs = array(); if (isset($this->_options['engine']['outputs'])) { if (!is_array($this->_options['engine']['outputs'])) { // correct user mistake in configuration $this->_options['engine']['outputs'] = array($this->_options['engine']['outputs']); } foreach ($this->_options['engine']['outputs'] as $keyName) { $params = array_key_exists('output', $this->_options) && array_key_exists($keyName, $this->_options['output']) ? $this->_options['output'][$keyName] : array(); $class = array_key_exists('class', $params) ? $params['class'] : $keyName; // TODO pass $keyName to constructor $class = "Output_" . ucfirst($class); $outputs[] = new $class($params); } } // replace current output self::$out->outputRemove(); foreach ($outputs as $output) { self::$out->outputAdd($output); } // first output self::$out->welcome(); }