public function startService($serviceID)
{
if (isset($this->_services[$serviceID])) {
list($serviceClass, $initProperties, $configElement) = $this->_services[$serviceID];
$service = Prado::createComponent($serviceClass);
if (!$service instanceof IService) {
throw new THttpException(500, 'application_service_invalid', $serviceClass);
}
if (!$service->getEnabled()) {
throw new THttpException(500, 'application_service_unavailable', $serviceClass);
}
$service->setID($serviceID);
$this->setService($service);
foreach ($initProperties as $name => $value) {
$service->setSubProperty($name, $value);
}
if ($configElement !== null) {
$config = new TApplicationConfiguration();
if ($this->getConfigurationType() == self::CONFIG_TYPE_PHP) {
$config->loadFromPhp($configElement, $this->getBasePath());
} else {
$config->loadFromXml($configElement, $this->getBasePath());
}
$this->applyConfiguration($config, true);
}
$service->init($configElement);
} else {
throw new THttpException(500, 'application_service_unknown', $serviceID);
}
}