diff options
-rw-r--r-- | demos/personal/index.php | 3 | ||||
-rw-r--r-- | demos/quickstart/index.php | 3 | ||||
-rw-r--r-- | demos/quickstart/protected/pages/Fundamentals/Services.page | 2 | ||||
-rw-r--r-- | framework/Exceptions/messages.txt | 2 | ||||
-rw-r--r-- | framework/TApplication.php | 47 | ||||
-rw-r--r-- | framework/Web/Services/TPageService.php | 6 |
6 files changed, 28 insertions, 35 deletions
diff --git a/demos/personal/index.php b/demos/personal/index.php index 174f5d33..04695b16 100644 --- a/demos/personal/index.php +++ b/demos/personal/index.php @@ -2,7 +2,6 @@ $basePath=dirname(__FILE__);
$frameworkPath=$basePath.'/../../framework/prado.php';
-$configPath=$basePath.'/protected/application.xml';
$assetsPath=$basePath.'/assets';
if(!is_writable($assetsPath))
@@ -10,7 +9,7 @@ if(!is_writable($assetsPath)) require_once($frameworkPath);
-$application=new TApplication($configPath,true);
+$application=new TApplication;
$application->run();
?>
\ No newline at end of file diff --git a/demos/quickstart/index.php b/demos/quickstart/index.php index 174f5d33..04695b16 100644 --- a/demos/quickstart/index.php +++ b/demos/quickstart/index.php @@ -2,7 +2,6 @@ $basePath=dirname(__FILE__);
$frameworkPath=$basePath.'/../../framework/prado.php';
-$configPath=$basePath.'/protected/application.xml';
$assetsPath=$basePath.'/assets';
if(!is_writable($assetsPath))
@@ -10,7 +9,7 @@ if(!is_writable($assetsPath)) require_once($frameworkPath);
-$application=new TApplication($configPath,true);
+$application=new TApplication;
$application->run();
?>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Fundamentals/Services.page b/demos/quickstart/protected/pages/Fundamentals/Services.page index 500929ba..0ed976c9 100644 --- a/demos/quickstart/protected/pages/Fundamentals/Services.page +++ b/demos/quickstart/protected/pages/Fundamentals/Services.page @@ -16,7 +16,7 @@ Developers may implement additional services for their applications. To make a s <h2>Page Service</h2>
<p>
-TBD
+PRADO implements <code>TPageService</code> to process users' page requests.
</p>
</com:TContent>
\ No newline at end of file diff --git a/framework/Exceptions/messages.txt b/framework/Exceptions/messages.txt index d32b3005..c31c49d2 100644 --- a/framework/Exceptions/messages.txt +++ b/framework/Exceptions/messages.txt @@ -23,7 +23,7 @@ map_addition_disallowed = The new item cannot be added to the map. map_item_unremovable = The item cannot be removed from the map.
map_data_not_iterable = Data must be either an array or an object implementing Traversable interface.
-application_configpath_inexistent = Application configuration path '%s' does not exist.
+application_basepath_invalid = Application base path '%s' does not exist or is not a directory.
application_runtimepath_invalid = Application runtime path '%s' does not exist or is not writable by Web server process.
application_service_invalid = Service '%s' must implement IService interface.
application_service_unknown = Requested service '%s' is not defined.
diff --git a/framework/TApplication.php b/framework/TApplication.php index 716c35b5..104ff795 100644 --- a/framework/TApplication.php +++ b/framework/TApplication.php @@ -191,9 +191,9 @@ class TApplication extends TComponent */ private $_configFile; /** - * @var string configuration path + * @var string application base path */ - private $_configPath; + private $_basePath; /** * @var string directory storing application state */ @@ -245,13 +245,19 @@ class TApplication extends TComponent /** * Constructor. - * 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) + * Sets application base path and initializes the application singleton. + * Application base path refers to the root directory where application + * data and code not directly accessible by Web users are stored. + * If there is a file named <b>application.xml</b> under the base path, + * it is assumed to be the application configuration file and will be loaded + * and parsed when the application runs. By default, the base path is assumed + * to be the <b>protected</b> directory under the directory containing + * the current running script. + * @param string application base path (absolute or relative to current running script) * @param boolean whether to cache application configuration. Defaults to true. * @throws TConfigurationException if configuration file cannot be read or the runtime path is invalid. */ - public function __construct($configPath=null,$cacheConfig=true) + public function __construct($basePath='protected',$cacheConfig=true) { parent::__construct(); @@ -259,31 +265,20 @@ class TApplication extends TComponent Prado::setApplication($this); // determine configuration path and file - if($configPath===null) - $configPath=dirname($_SERVER['SCRIPT_FILENAME']).'/protected'; - if(($this->_configPath=realpath($configPath))===false) - throw new TConfigurationException('application_configpath_inexistent',$configPath); - if(is_dir($this->_configPath)) - { - $configFile=$this->_configPath.'/'.self::CONFIG_FILE; - $this->_configFile=is_file($configFile) ? $configFile : null; - } - else - { - $this->_configFile=$this->_configPath; - $this->_configPath=dirname($this->_configPath); - } - $this->_runtimePath=$this->_configPath.'/'.self::RUNTIME_PATH; + if(($this->_basePath=realpath($basePath))===false || !is_dir($this->_basePath)) + throw new TConfigurationException('application_basepath_invalid',$basePath); + $configFile=$this->_basePath.'/'.self::CONFIG_FILE; + $this->_configFile=is_file($configFile) ? $configFile : null; + $this->_runtimePath=$this->_basePath.'/'.self::RUNTIME_PATH; if(!is_dir($this->_runtimePath) || !is_writable($this->_runtimePath)) throw new TConfigurationException('application_runtimepath_invalid',$this->_runtimePath); $this->_cacheFile=$cacheConfig ? $this->_runtimePath.'/'.self::CONFIGCACHE_FILE : null; // generates unique ID by hashing the configuration path - $this->_uniqueID=md5($this->_configPath); + $this->_uniqueID=md5($this->_basePath); } - /** * Executes the lifecycles of the application. * This is the main entry function that leads to the running of the whole @@ -455,9 +450,9 @@ class TApplication extends TComponent /** * @return string configuration path */ - public function getConfigurationPath() + public function getBasePath() { - return $this->_configPath; + return $this->_basePath; } /** @@ -683,7 +678,7 @@ class TApplication extends TComponent */ protected function initApplication() { - Prado::setPathOfAlias('Application',$this->_configPath); + Prado::setPathOfAlias('Application',$this->_basePath); if($this->_configFile===null) { diff --git a/framework/Web/Services/TPageService.php b/framework/Web/Services/TPageService.php index 886fec24..d94b7ae2 100644 --- a/framework/Web/Services/TPageService.php +++ b/framework/Web/Services/TPageService.php @@ -154,7 +154,7 @@ class TPageService extends TService if($this->_basePath===null)
{
- $basePath=$application->getConfigurationPath().'/'.self::DEFAULT_BASEPATH;
+ $basePath=$application->getBasePath().'/'.self::DEFAULT_BASEPATH;
if(($this->_basePath=realpath($basePath))===false || !is_dir($this->_basePath))
throw new TConfigurationException('pageservice_basepath_invalid',$basePath);
}
@@ -169,7 +169,7 @@ class TPageService extends TService {
$pageConfig=new TPageConfiguration;
if($config!==null)
- $pageConfig->loadXmlElement($config,$application->getConfigurationPath(),null);
+ $pageConfig->loadXmlElement($config,$application->getBasePath(),null);
$pageConfig->loadConfigurationFiles($this->_pagePath,$this->_basePath);
}
else
@@ -219,7 +219,7 @@ class TPageService extends TService {
$pageConfig=new TPageConfiguration;
if($config!==null)
- $pageConfig->loadXmlElement($config,$application->getConfigurationPath(),null);
+ $pageConfig->loadXmlElement($config,$application->getBasePath(),null);
$pageConfig->loadConfigurationFiles($this->_pagePath,$this->_basePath);
$cache->set(self::CONFIG_CACHE_PREFIX.$this->_pagePath,array($pageConfig,$currentTimestamp));
}
|