diff options
Diffstat (limited to 'framework/TApplication.php')
-rw-r--r-- | framework/TApplication.php | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/framework/TApplication.php b/framework/TApplication.php index 8455c632..97c9f8e3 100644 --- a/framework/TApplication.php +++ b/framework/TApplication.php @@ -115,13 +115,9 @@ class TApplication extends TComponent const STATE_PERFORMANCE='Performance'; /** - * Default service ID - */ - const DEFAULT_SERVICE='page'; - /** * Page service ID */ - const PAGE_SERVICE='page'; + const PAGE_SERVICE_ID='page'; /** * Application configuration file name */ @@ -252,9 +248,8 @@ class TApplication extends TComponent * Initializes the application singleton. This method ensures that users can * only create one application instance. * @param string configuration file path (absolute or relative to current running script) - * @param string a directory used to store application-level persistent data. Defaults to the path having the application configuration file. * @param boolean whether to cache application configuration. Defaults to true. - * @throws TConfigurationException if configuration file cannot be read or the state path is invalid. + * @throws TConfigurationException if configuration file cannot be read or the runtime path is invalid. */ public function __construct($configPath=null,$cacheConfig=true) { @@ -706,12 +701,8 @@ class TApplication extends TComponent if($this->_configFile===null) { - if(($serviceID=$this->getRequest()->getServiceID())===null) - $serviceID=self::DEFAULT_SERVICE; - if($serviceID===self::PAGE_SERVICE) - $this->_service=$this->getPageService(); - else - throw new THttpException(500,'application_service_unknown',$serviceID); + $this->getRequest()->setAvailableServices(array(self::PAGE_SERVICE_ID)); + $this->_service=$this->getPageService(); return; } @@ -771,23 +762,28 @@ class TApplication extends TComponent $module->init($this,$moduleConfig[2]); } - if(($serviceID=$this->getRequest()->getServiceID())===null) - $serviceID=self::DEFAULT_SERVICE; + // load service + $services=$config->getServices(); + $serviceIDs=array_keys($services); + array_unshift($serviceIDs,self::PAGE_SERVICE_ID); + $request=$this->getRequest(); + $request->setAvailableServices($serviceIDs); - if(($serviceConfig=$config->getService($serviceID))!==null) + if(($serviceID=$request->getServiceID())===null) + $serviceID=self::PAGE_SERVICE_ID; + if(isset($services[$serviceID])) { + $serviceConfig=$services[$serviceID]; $service=Prado::createComponent($serviceConfig[0]); if(!($service instanceof IService)) - throw new TConfigurationException('application_service_invalid',$serviceID); + throw new THttpException(500,'application_service_unknown',$serviceID); $this->_service=$service; foreach($serviceConfig[1] as $name=>$value) $service->setSubProperty($name,$value); $service->init($this,$serviceConfig[2]); } - else if($serviceID===self::DEFAULT_SERVICE) - $this->_service=$this->getPageService(); else - throw new THttpException(500,'application_service_unknown',$serviceID); + $this->_service=$this->getPageService(); } /** @@ -1113,6 +1109,11 @@ class TApplicationConfiguration extends TComponent return isset($this->_services[$id])?$this->_services[$id]:null; } + public function getServices() + { + return $this->_services; + } + /** * @return array list of parameters */ |