/** * Create a transport from config * * @param ConfigObject $config * * @return LocalCommandFile|RemoteCommandFile * @throws ConfigurationError */ public static function fromConfig(ConfigObject $config) { $config = clone $config; switch (strtolower($config->transport)) { case RemoteCommandFile::TRANSPORT: $transport = new RemoteCommandFile(); break; case LocalCommandFile::TRANSPORT: case '': // Casting null to string is the empty string $transport = new LocalCommandFile(); break; default: throw new ConfigurationError('Can\'t create command transport \'%s\'. Invalid transport defined in \'%s\'.' . ' Use one of \'%s\' or \'%s\'.', $config->transport, self::$config->getConfigFile(), LocalCommandFile::TRANSPORT, RemoteCommandFile::TRANSPORT); } unset($config->transport); foreach ($config as $key => $value) { $method = 'set' . ucfirst($key); if (!method_exists($transport, $method)) { // Ignore settings from config that don't have a setter on the transport instead of throwing an // exception here because the transport should throw an exception if it's not fully set up // when being about to send a command continue; } $transport->{$method}($value); } return $transport; }
/** * Persist the current configuration to disk * * If an error occurs the user is shown a view describing the issue and displaying the raw INI configuration. * * @return bool Whether the configuration could be persisted */ public function save() { try { $this->config->saveIni(); } catch (Exception $e) { $this->addDecorator('ViewScript', array('viewModule' => 'default', 'viewScript' => 'showConfiguration.phtml', 'errorMessage' => $e->getMessage(), 'configString' => $this->config, 'filePath' => $this->config->getConfigFile(), 'placement' => Zend_Form_Decorator_Abstract::PREPEND)); return false; } return true; }