From ecdb360eb1f34bdeb8d7d25160ba8ce4941bf66b Mon Sep 17 00:00:00 2001 From: xue <> Date: Mon, 12 Feb 2007 21:04:07 +0000 Subject: refactored TApplication. --- framework/TApplication.php | 118 ++++++++++++++++++++++++++++++--------------- 1 file changed, 80 insertions(+), 38 deletions(-) (limited to 'framework/TApplication.php') diff --git a/framework/TApplication.php b/framework/TApplication.php index 31efd8a0..b12dc64a 100644 --- a/framework/TApplication.php +++ b/framework/TApplication.php @@ -180,11 +180,11 @@ class TApplication extends TComponent /** * @var IService current service instance */ - private $_service=null; + private $_service; /** * @var TPageService page service */ - private $_pageService=null; + private $_pageService; /** * @var array list of application modules */ @@ -220,47 +220,47 @@ class TApplication extends TComponent /** * @var TErrorHandler error handler module */ - private $_errorHandler=null; + private $_errorHandler; /** * @var THttpRequest request module */ - private $_request=null; + private $_request; /** * @var THttpResponse response module */ - private $_response=null; + private $_response; /** * @var THttpSession session module, could be null */ - private $_session=null; + private $_session; /** * @var ICache cache module, could be null */ - private $_cache=null; + private $_cache; /** * @var IStatePersister application state persister */ - private $_statePersister=null; + private $_statePersister; /** * @var IUser user instance, could be null */ - private $_user=null; + private $_user; /** * @var TGlobalization module, could be null */ - private $_globalization=null; + private $_globalization; /** * @var TSecurityManager security manager module */ - private $_security=null; + private $_security; /** * @var TAssetManager asset manager module */ - private $_assetManager=null; + private $_assetManager; /** * @var TAuthorizationRuleCollection collection of authorization rules */ - private $_authRules=null; + private $_authRules; /** * @var TApplicationMode application mode */ @@ -289,42 +289,61 @@ class TApplication extends TComponent // register application as a singleton Prado::setApplication($this); + $this->resolvePaths($basePath); + + if($cacheConfig) + $this->_cacheFile=$this->_runtimePath.DIRECTORY_SEPARATOR.self::CONFIGCACHE_FILE; + + // generates unique ID by hashing the runtime path + $this->_uniqueID=md5($this->_runtimePath); + } + + /** + * Resolves application-relevant paths. + * This method is invoked by the application constructor + * to determine the application configuration file, + * application root path and the runtime path. + * @param string the application root path or the application configuration file + * @see setBasePath + * @see setRuntimePath + * @see setConfigurationFile + */ + protected function resolvePaths($basePath) + { // determine configuration path and file - if(($this->_basePath=realpath($basePath))===false) + if(empty($basePath) || ($basePath=realpath($basePath))===false) throw new TConfigurationException('application_basepath_invalid',$basePath); - if(is_file($this->_basePath)) + if(is_file($basePath)) { - $this->_configFile=$this->_basePath; - $this->_basePath=dirname($this->_basePath); + $configFile=$basePath; + $basePath=dirname($configFile); } - else if(is_file($this->_basePath.'/'.self::CONFIG_FILE)) - $this->_configFile=$this->_basePath.'/'.self::CONFIG_FILE; + else if(is_file($basePath.DIRECTORY_SEPARATOR.self::CONFIG_FILE)) + $configFile=$basePath.DIRECTORY_SEPARATOR.self::CONFIG_FILE; else - $this->_configFile=null; + $configFile=null; // determine runtime path - $this->_runtimePath=$this->_basePath.'/'.self::RUNTIME_PATH; - if(is_writable($this->_runtimePath)) + $runtimePath=$basePath.DIRECTORY_SEPARATOR.self::RUNTIME_PATH; + if(is_writable($runtimePath)) { - if($this->_configFile!==null) + if($configFile!==null) { - $subdir=basename($this->_configFile); - $this->_runtimePath.='/'.$subdir; - if(!is_dir($this->_runtimePath)) + $runtimePath.=DIRECTORY_SEPARATOR.basename($configFile); + if(!is_dir($runtimePath)) { - if(@mkdir($this->_runtimePath)===false) - throw new TConfigurationException('application_runtimepath_failed',$this->_runtimePath); - chmod($this->_runtimePath, PRADO_CHMOD); //make it deletable + if(@mkdir($runtimePath)===false) + throw new TConfigurationException('application_runtimepath_failed',$runtimePath); + @chmod($runtimePath, PRADO_CHMOD); //make it deletable } + $this->setConfigurationFile($configFile); } + $this->setBasePath($basePath); + $this->setRuntimePath($runtimePath); } else - throw new TConfigurationException('application_runtimepath_invalid',$this->_runtimePath); + throw new TConfigurationException('application_runtimepath_invalid',$runtimePath); - $this->_cacheFile=$cacheConfig ? $this->_runtimePath.'/'.self::CONFIGCACHE_FILE : null; - - // generates unique ID by hashing the runtime path - $this->_uniqueID=md5($this->_runtimePath); } /** @@ -485,7 +504,7 @@ class TApplication extends TComponent } /** - * @return string configuration path + * @return string the directory containing the application configuration file (absolute path) */ public function getBasePath() { @@ -493,7 +512,15 @@ class TApplication extends TComponent } /** - * @return string configuration file path + * @param string the directory containing the application configuration file + */ + public function setBasePath($value) + { + $this->_basePath=$value; + } + + /** + * @return string the application configuration file (absolute path) */ public function getConfigurationFile() { @@ -501,14 +528,29 @@ class TApplication extends TComponent } /** - * Gets the directory storing application-level persistent data. - * @return string application state path + * @param string the application configuration file (absolute path) + */ + public function setConfigurationFile($value) + { + $this->_configFile=$value; + } + + /** + * @return string the directory storing cache data and application-level persistent data. (absolute path) */ public function getRuntimePath() { return $this->_runtimePath; } + /** + * @param string the directory storing cache data and application-level persistent data. (absolute path) + */ + public function setRuntimePath($value) + { + $this->_runtimePath=$value; + } + /** * @return IService the currently requested service */ -- cgit v1.2.3