CApplication
Package | system.base |
---|---|
Inheritance | abstract class CApplication » CModule » CComponent |
Subclasses | CConsoleApplication, CWebApplication |
Since | 1.0 |
Source Code | framework/base/CApplication.php |
An application serves as the global context that the user request is being processed. It manages a set of application components that provide specific functionalities to the whole application.
The core application components provided by CApplication are the following:
- errorHandler: handles PHP errors and uncaught exceptions. This application component is dynamically loaded when needed.
- securityManager: provides security-related services, such as hashing, encryption. This application component is dynamically loaded when needed.
- statePersister: provides global state persistence method. This application component is dynamically loaded when needed.
- cache: provides caching feature. This application component is disabled by default.
- messages: provides the message source for translating application messages. This application component is dynamically loaded when needed.
- coreMessages: provides the message source for translating Yii framework messages. This application component is dynamically loaded when needed.
- urlManager: provides URL construction as well as parsing functionality. This application component is dynamically loaded when needed.
- request: represents the current HTTP request by encapsulating the $_SERVER variable and managing cookies sent from and sent to the user. This application component is dynamically loaded when needed.
- format: provides a set of commonly used data formatting methods. This application component is dynamically loaded when needed.
CApplication will undergo the following lifecycles when processing a user request:
- load application configuration;
- set up error handling;
- load static application components;
- onBeginRequest: preprocess the user request;
- processRequest: process the user request;
- onEndRequest: postprocess the user request;
Starting from lifecycle 3, if a PHP error or an uncaught exception occurs, the application will switch to its error handling logic and jump to step 6 afterwards.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
basePath | string | Returns the root path of the application. | CApplication |
baseUrl | string | Returns the relative URL for the application. | CApplication |
behaviors | array | the behaviors that should be attached to the module. | CModule |
cache | CCache | Returns the cache component. | CApplication |
charset | string | the charset currently used for the application. | CApplication |
components | array | Returns the application components. | CModule |
controller | CController | the currently active controller. | CApplication |
coreMessages | CPhpMessageSource | Returns the core message translations component. | CApplication |
dateFormatter | CDateFormatter | Returns the locale-dependent date formatter. | CApplication |
db | CDbConnection | Returns the database connection component. | CApplication |
errorHandler | CErrorHandler | Returns the error handler component. | CApplication |
extensionPath | string | Returns the root directory that holds all third-party extensions. | CApplication |
format | CFormatter | Returns the formatter component. | CApplication |
homeUrl | string | the homepage URL | CApplication |
id | string | Returns the unique identifier for the application. | CApplication |
language | string | Returns the language that the user is using and the application should be targeted to. | CApplication |
locale | CLocale | Returns the locale instance. | CApplication |
localeClass | string | the class used to get locale data. | CApplication |
localeDataPath | string | Returns the directory that contains the locale data. | CApplication |
messages | CMessageSource | Returns the application message translations component. | CApplication |
modulePath | string | Returns the directory that contains the application modules. | CModule |
modules | array | Returns the configuration of the currently installed modules. | CModule |
name | string | the application name. | CApplication |
numberFormatter | CNumberFormatter | the locale-dependent number formatter. | CApplication |
params | CAttributeCollection | Returns user-defined parameters. | CModule |
parentModule | CModule | Returns the parent module. | CModule |
preload | array | the IDs of the application components that should be preloaded. | CModule |
request | CHttpRequest | Returns the request component. | CApplication |
runtimePath | string | Returns the directory that stores runtime files. | CApplication |
securityManager | CSecurityManager | Returns the security manager component. | CApplication |
sourceLanguage | string | the language that the application is written in. | CApplication |
statePersister | CStatePersister | Returns the state persister component. | CApplication |
timeZone | string | Returns the time zone used by this application. | CApplication |
urlManager | CUrlManager | Returns the URL manager component. | CApplication |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__construct() | Constructor. | CApplication |
__get() | Getter magic method. | CModule |
__isset() | Checks if a property value is null. | CModule |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
clearGlobalState() | Clears a global value. | CApplication |
configure() | Configures the module with the specified configuration. | CModule |
createAbsoluteUrl() | Creates an absolute URL based on the given controller and action information. | CApplication |
createUrl() | Creates a relative URL based on the given controller and action information. | CApplication |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
displayError() | Displays the captured PHP error. | CApplication |
displayException() | Displays the uncaught PHP exception. | CApplication |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
end() | Terminates the application. | CApplication |
evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
findLocalizedFile() | Returns the localized version of a specified file. | CApplication |
getBasePath() | Returns the root path of the application. | CApplication |
getBaseUrl() | Returns the relative URL for the application. | CApplication |
getCache() | Returns the cache component. | CApplication |
getComponent() | Retrieves the named application component. | CModule |
getComponents() | Returns the application components. | CModule |
getController() | Returns the currently active controller. Null is returned in this base class. | CApplication |
getCoreMessages() | Returns the core message translations component. | CApplication |
getDateFormatter() | Returns the locale-dependent date formatter. | CApplication |
getDb() | Returns the database connection component. | CApplication |
getErrorHandler() | Returns the error handler component. | CApplication |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getExtensionPath() | Returns the root directory that holds all third-party extensions. | CApplication |
getFormat() | Returns the formatter component. | CApplication |
getGlobalState() | Returns a global value. | CApplication |
getHomeUrl() | Returns the homepage URL | CApplication |
getId() | Returns the unique identifier for the application. | CApplication |
getLanguage() | Returns the language that the user is using and the application should be targeted to. | CApplication |
getLocale() | Returns the locale instance. | CApplication |
getLocaleDataPath() | Returns the directory that contains the locale data. | CApplication |
getMessages() | Returns the application message translations component. | CApplication |
getModule() | Retrieves the named application module. | CModule |
getModulePath() | Returns the directory that contains the application modules. | CModule |
getModules() | Returns the configuration of the currently installed modules. | CModule |
getNumberFormatter() | Returns the locale-dependent number formatter. The current application locale will be used. | CApplication |
getParams() | Returns user-defined parameters. | CModule |
getParentModule() | Returns the parent module. | CModule |
getRequest() | Returns the request component. | CApplication |
getRuntimePath() | Returns the directory that stores runtime files. | CApplication |
getSecurityManager() | Returns the security manager component. | CApplication |
getStatePersister() | Returns the state persister component. | CApplication |
getTimeZone() | Returns the time zone used by this application. | CApplication |
getUrlManager() | Returns the URL manager component. | CApplication |
handleError() | Handles PHP execution errors such as warnings, notices. | CApplication |
handleException() | Handles uncaught PHP exceptions. | CApplication |
hasComponent() | Checks whether the named component exists. | CModule |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasModule() | Returns a value indicating whether the specified module is installed. | CModule |
hasProperty() | Determines whether a property is defined. | CComponent |
loadGlobalState() | Loads the global state data from persistent storage. | CApplication |
onBeginRequest() | Raised right BEFORE the application processes the request. | CApplication |
onEndRequest() | Raised right AFTER the application processes the request. | CApplication |
onError() | Raised when a PHP execution error occurs. | CApplication |
onException() | Raised when an uncaught PHP exception occurs. | CApplication |
processRequest() | Processes the request. | CApplication |
raiseEvent() | Raises an event. | CComponent |
run() | Runs the application. | CApplication |
saveGlobalState() | Saves the global state data into persistent storage. | CApplication |
setAliases() | Defines the root aliases. | CModule |
setBasePath() | Sets the root directory of the application. | CApplication |
setComponent() | Puts a component under the management of the module. | CModule |
setComponents() | Sets the application components. | CModule |
setExtensionPath() | Sets the root directory that holds all third-party extensions. | CApplication |
setGlobalState() | Sets a global value. | CApplication |
setHomeUrl() | Sets the homepage URL | CApplication |
setId() | Sets the unique identifier for the application. | CApplication |
setImport() | Sets the aliases that are used in the module. | CModule |
setLanguage() | Specifies which language the application is targeted to. | CApplication |
setLocaleDataPath() | Sets the directory that contains the locale data. | CApplication |
setModulePath() | Sets the directory that contains the application modules. | CModule |
setModules() | Configures the sub-modules of this module. | CModule |
setParams() | Sets user-defined parameters. | CModule |
setRuntimePath() | Sets the directory that stores runtime files. | CApplication |
setTimeZone() | Sets the time zone used by this application. | CApplication |
Protected Methods
Method | Description | Defined By |
---|---|---|
init() | Initializes the module. | CModule |
initSystemHandlers() | Initializes the error handlers. | CApplication |
preinit() | Preinitializes the module. | CModule |
preloadComponents() | Loads static application components. | CModule |
registerCoreComponents() | Registers the core application components. | CApplication |
Events
Event | Description | Defined By |
---|---|---|
onBeginRequest | Raised right BEFORE the application processes the request. | CApplication |
onEndRequest | Raised right AFTER the application processes the request. | CApplication |
onException | Raised when an uncaught PHP exception occurs. | CApplication |
onError | Raised when a PHP execution error occurs. | CApplication |
Property Details
basePath property
public string getBasePath()
public void setBasePath(string $path)
Returns the root path of the application.
baseUrl property read-only
public string getBaseUrl(boolean $absolute=false)
Returns the relative URL for the application. This is a shortcut method to CHttpRequest::getBaseUrl().
See Also
cache property read-only
public CCache getCache()
Returns the cache component.
charset property
public string $charset;
the charset currently used for the application. Defaults to 'UTF-8'.
controller property read-only (available since v1.1.8)
public CController getController()
the currently active controller. Null is returned in this base class.
coreMessages property read-only
public CPhpMessageSource getCoreMessages()
Returns the core message translations component.
dateFormatter property read-only
public CDateFormatter getDateFormatter()
Returns the locale-dependent date formatter.
db property read-only
public CDbConnection getDb()
Returns the database connection component.
errorHandler property read-only
public CErrorHandler getErrorHandler()
Returns the error handler component.
extensionPath property
public string getExtensionPath()
public void setExtensionPath(string $path)
Returns the root directory that holds all third-party extensions.
format property read-only
public CFormatter getFormat()
Returns the formatter component.
homeUrl property
public string getHomeUrl()
public void setHomeUrl(string $value)
the homepage URL
id property
public string getId()
public void setId(string $id)
Returns the unique identifier for the application.
language property
public string getLanguage()
public void setLanguage(string $language)
Returns the language that the user is using and the application should be targeted to.
locale property read-only
public CLocale getLocale(string $localeID=NULL)
Returns the locale instance.
localeClass property
public string $localeClass;
the class used to get locale data. Defaults to 'CLocale'.
localeDataPath property (available since v1.1.0)
public string getLocaleDataPath()
public void setLocaleDataPath(string $value)
Returns the directory that contains the locale data.
messages property read-only
public CMessageSource getMessages()
Returns the application message translations component.
name property
public string $name;
the application name. Defaults to 'My Application'.
numberFormatter property read-only
public CNumberFormatter getNumberFormatter()
the locale-dependent number formatter. The current application locale will be used.
request property read-only
public CHttpRequest getRequest()
Returns the request component.
runtimePath property
public string getRuntimePath()
public void setRuntimePath(string $path)
Returns the directory that stores runtime files.
securityManager property read-only
public CSecurityManager getSecurityManager()
Returns the security manager component.
sourceLanguage property
public string $sourceLanguage;
the language that the application is written in. This mainly refers to the language that the messages and view files are in. Defaults to 'en_us' (US English).
statePersister property read-only
public CStatePersister getStatePersister()
Returns the state persister component.
timeZone property
public string getTimeZone()
public void setTimeZone(string $value)
Returns the time zone used by this application. This is a simple wrapper of PHP function date_default_timezone_get().
urlManager property read-only
public CUrlManager getUrlManager()
Returns the URL manager component.
Method Details
__construct() method
public void __construct(mixed $config=NULL) | ||
$config | mixed | application configuration. If a string, it is treated as the path of the file that contains the configuration; If an array, it is the actual configuration information. Please make sure you specify the basePath property in the configuration, which should point to the directory containing all application logic, template and data. If not, the directory will be defaulted to 'protected'. |
public function __construct($config=null)
{
Yii::setApplication($this);
// set basePath as early as possible to avoid trouble
if(is_string($config))
$config=require($config);
if(isset($config['basePath']))
{
$this->setBasePath($config['basePath']);
unset($config['basePath']);
}
else
$this->setBasePath('protected');
Yii::setPathOfAlias('application',$this->getBasePath());
Yii::setPathOfAlias('webroot',dirname($_SERVER['SCRIPT_FILENAME']));
if(isset($config['extensionPath']))
{
$this->setExtensionPath($config['extensionPath']);
unset($config['extensionPath']);
}
else
Yii::setPathOfAlias('ext',$this->getBasePath().DIRECTORY_SEPARATOR.'extensions');
if(isset($config['aliases']))
{
$this->setAliases($config['aliases']);
unset($config['aliases']);
}
$this->preinit();
$this->initSystemHandlers();
$this->registerCoreComponents();
$this->configure($config);
$this->attachBehaviors($this->behaviors);
$this->preloadComponents();
$this->init();
}
Constructor.
clearGlobalState() method
public void clearGlobalState(string $key) | ||
$key | string | the name of the value to be cleared |
public function clearGlobalState($key)
{
$this->setGlobalState($key,true,true);
}
Clears a global value.
The value cleared will no longer be available in this request and the following requests.
createAbsoluteUrl() method
public string createAbsoluteUrl(string $route, array $params=array ( ), string $schema='', string $ampersand='&') | ||
$route | string | the URL route. This should be in the format of 'ControllerID/ActionID'. |
$params | array | additional GET parameters (name=>value). Both the name and value will be URL-encoded. |
$schema | string | schema to use (e.g. http, https). If empty, the schema used for the current request will be used. |
$ampersand | string | the token separating name-value pairs in the URL. |
{return} | string | the constructed URL |
public function createAbsoluteUrl($route,$params=array(),$schema='',$ampersand='&')
{
$url=$this->createUrl($route,$params,$ampersand);
if(strpos($url,'http')===0 || strpos($url,'//')===0)
return $url;
else
return $this->getRequest()->getHostInfo($schema).$url;
}
Creates an absolute URL based on the given controller and action information.
createUrl() method
public string createUrl(string $route, array $params=array ( ), string $ampersand='&') | ||
$route | string | the URL route. This should be in the format of 'ControllerID/ActionID'. |
$params | array | additional GET parameters (name=>value). Both the name and value will be URL-encoded. |
$ampersand | string | the token separating name-value pairs in the URL. |
{return} | string | the constructed URL |
public function createUrl($route,$params=array(),$ampersand='&')
{
return $this->getUrlManager()->createUrl($route,$params,$ampersand);
}
Creates a relative URL based on the given controller and action information.
displayError() method
public void displayError(integer $code, string $message, string $file, string $line) | ||
$code | integer | error code |
$message | string | error message |
$file | string | error file |
$line | string | error line |
public function displayError($code,$message,$file,$line)
{
if(YII_DEBUG)
{
echo "<h1>PHP Error [$code]</h1>\n";
echo "<p>$message ($file:$line)</p>\n";
echo '<pre>';
$trace=debug_backtrace();
// skip the first 3 stacks as they do not tell the error position
if(count($trace)>3)
$trace=array_slice($trace,3);
foreach($trace as $i=>$t)
{
if(!isset($t['file']))
$t['file']='unknown';
if(!isset($t['line']))
$t['line']=0;
if(!isset($t['function']))
$t['function']='unknown';
echo "#$i{$t['file']}({$t['line']}): ";
if(isset($t['object']) && is_object($t['object']))
echo get_class($t['object']).'->';
echo "{$t['function']}()\n";
}
echo '</pre>';
}
else
{
echo "<h1>PHP Error [$code]</h1>\n";
echo "<p>$message</p>\n";
}
}
Displays the captured PHP error. This method displays the error in HTML when there is no active error handler.
displayException() method
public void displayException(Exception $exception) | ||
$exception | Exception | the uncaught exception |
public function displayException($exception)
{
if(YII_DEBUG)
{
echo '<h1>'.get_class($exception)."</h1>\n";
echo '<p>'.$exception->getMessage().' ('.$exception->getFile().':'.$exception->getLine().')</p>';
echo '<pre>'.$exception->getTraceAsString().'</pre>';
}
else
{
echo '<h1>'.get_class($exception)."</h1>\n";
echo '<p>'.$exception->getMessage().'</p>';
}
}
Displays the uncaught PHP exception. This method displays the exception in HTML when there is no active error handler.
end() method
public void end(integer $status=0, boolean $exit=true) | ||
$status | integer | exit status (value 0 means normal exit while other values mean abnormal exit). |
$exit | boolean | whether to exit the current request. This parameter has been available since version 1.1.5. It defaults to true, meaning the PHP's exit() function will be called at the end of this method. |
public function end($status=0,$exit=true)
{
if($this->hasEventHandler('onEndRequest'))
$this->onEndRequest(new CEvent($this));
if($exit)
exit($status);
}
Terminates the application. This method replaces PHP's exit() function by calling onEndRequest before exiting.
findLocalizedFile() method
public string findLocalizedFile(string $srcFile, string $srcLanguage=NULL, string $language=NULL) | ||
$srcFile | string | the original file |
$srcLanguage | string | the language that the original file is in. If null, the application source language is used. |
$language | string | the desired language that the file should be localized to. If null, the application language will be used. |
{return} | string | the matching localized file. The original file is returned if no localized version is found or if source language is the same as the desired language. |
public function findLocalizedFile($srcFile,$srcLanguage=null,$language=null)
{
if($srcLanguage===null)
$srcLanguage=$this->sourceLanguage;
if($language===null)
$language=$this->getLanguage();
if($language===$srcLanguage)
return $srcFile;
$desiredFile=dirname($srcFile).DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.basename($srcFile);
return is_file($desiredFile) ? $desiredFile : $srcFile;
}
Returns the localized version of a specified file.
The searching is based on the specified language code. In particular, a file with the same name will be looked for under the subdirectory named as the locale ID. For example, given the file "path/to/view.php" and locale ID "zh_cn", the localized file will be looked for as "path/to/zh_cn/view.php". If the file is not found, the original file will be returned.
For consistency, it is recommended that the locale ID is given in lower case and in the format of LanguageID_RegionID (e.g. "en_us").
getBasePath() method
public string getBasePath() | ||
{return} | string | the root directory of the application. Defaults to 'protected'. |
public function getBasePath()
{
return $this->_basePath;
}
Returns the root path of the application.
getBaseUrl() method
public string getBaseUrl(boolean $absolute=false) | ||
$absolute | boolean | whether to return an absolute URL. Defaults to false, meaning returning a relative one. |
{return} | string | the relative URL for the application |
public function getBaseUrl($absolute=false)
{
return $this->getRequest()->getBaseUrl($absolute);
}
Returns the relative URL for the application. This is a shortcut method to CHttpRequest::getBaseUrl().
See Also
getCache() method
public CCache getCache() | ||
{return} | CCache | the cache application component. Null if the component is not enabled. |
public function getCache()
{
return $this->getComponent('cache');
}
Returns the cache component.
getController() method (available since v1.1.8)
public CController getController() | ||
{return} | CController | the currently active controller. Null is returned in this base class. |
public function getController()
{
return null;
}
getCoreMessages() method
public CPhpMessageSource getCoreMessages() | ||
{return} | CPhpMessageSource | the core message translations |
public function getCoreMessages()
{
return $this->getComponent('coreMessages');
}
Returns the core message translations component.
getDateFormatter() method
public CDateFormatter getDateFormatter() | ||
{return} | CDateFormatter | the locale-dependent date formatter. The current application locale will be used. |
public function getDateFormatter()
{
return $this->getLocale()->getDateFormatter();
}
Returns the locale-dependent date formatter.
getDb() method
public CDbConnection getDb() | ||
{return} | CDbConnection | the database connection |
public function getDb()
{
return $this->getComponent('db');
}
Returns the database connection component.
getErrorHandler() method
public CErrorHandler getErrorHandler() | ||
{return} | CErrorHandler | the error handler application component. |
public function getErrorHandler()
{
return $this->getComponent('errorHandler');
}
Returns the error handler component.
getExtensionPath() method
public string getExtensionPath() | ||
{return} | string | the directory that contains all extensions. Defaults to the 'extensions' directory under 'protected'. |
public function getExtensionPath()
{
return Yii::getPathOfAlias('ext');
}
Returns the root directory that holds all third-party extensions.
getFormat() method
public CFormatter getFormat() | ||
{return} | CFormatter | the formatter component |
public function getFormat()
{
return $this->getComponent('format');
}
Returns the formatter component.
getGlobalState() method
public mixed getGlobalState(string $key, mixed $defaultValue=NULL) | ||
$key | string | the name of the value to be returned |
$defaultValue | mixed | the default value. If the named global value is not found, this will be returned instead. |
{return} | mixed | the named global value |
public function getGlobalState($key,$defaultValue=null)
{
if($this->_globalState===null)
$this->loadGlobalState();
if(isset($this->_globalState[$key]))
return $this->_globalState[$key];
else
return $defaultValue;
}
Returns a global value.
A global value is one that is persistent across users sessions and requests.
See Also
getHomeUrl() method
public string getHomeUrl() | ||
{return} | string | the homepage URL |
public function getHomeUrl()
{
if($this->_homeUrl===null)
{
if($this->getUrlManager()->showScriptName)
return $this->getRequest()->getScriptUrl();
else
return $this->getRequest()->getBaseUrl().'/';
}
else
return $this->_homeUrl;
}
getId() method
public string getId() | ||
{return} | string | the unique identifier for the application. |
public function getId()
{
if($this->_id!==null)
return $this->_id;
else
return $this->_id=sprintf('%x',crc32($this->getBasePath().$this->name));
}
Returns the unique identifier for the application.
getLanguage() method
public string getLanguage() | ||
{return} | string | the language that the user is using and the application should be targeted to. Defaults to the source language. |
public function getLanguage()
{
return $this->_language===null ? $this->sourceLanguage : $this->_language;
}
Returns the language that the user is using and the application should be targeted to.
getLocale() method
public CLocale getLocale(string $localeID=NULL) | ||
$localeID | string | the locale ID (e.g. en_US). If null, the application language ID will be used. |
{return} | CLocale | an instance of CLocale |
public function getLocale($localeID=null)
{
return call_user_func_array(array($this->localeClass, 'getInstance'),array($localeID===null?$this->getLanguage():$localeID));
}
Returns the locale instance.
getLocaleDataPath() method (available since v1.1.0)
public string getLocaleDataPath() | ||
{return} | string | the directory that contains the locale data. It defaults to 'framework/i18n/data'. |
public function getLocaleDataPath()
{
$vars=get_class_vars($this->localeClass);
if(empty($vars['dataPath']))
return Yii::getPathOfAlias('system.i18n.data');
return $vars['dataPath'];
}
Returns the directory that contains the locale data.
getMessages() method
public CMessageSource getMessages() | ||
{return} | CMessageSource | the application message translations |
public function getMessages()
{
return $this->getComponent('messages');
}
Returns the application message translations component.
getNumberFormatter() method
public CNumberFormatter getNumberFormatter() | ||
{return} | CNumberFormatter | the locale-dependent number formatter. The current application locale will be used. |
public function getNumberFormatter()
{
return $this->getLocale()->getNumberFormatter();
}
getRequest() method
public CHttpRequest getRequest() | ||
{return} | CHttpRequest | the request component |
public function getRequest()
{
return $this->getComponent('request');
}
Returns the request component.
getRuntimePath() method
public string getRuntimePath() | ||
{return} | string | the directory that stores runtime files. Defaults to 'protected/runtime'. |
public function getRuntimePath()
{
if($this->_runtimePath!==null)
return $this->_runtimePath;
else
{
$this->setRuntimePath($this->getBasePath().DIRECTORY_SEPARATOR.'runtime');
return $this->_runtimePath;
}
}
Returns the directory that stores runtime files.
getSecurityManager() method
public CSecurityManager getSecurityManager() | ||
{return} | CSecurityManager | the security manager application component. |
public function getSecurityManager()
{
return $this->getComponent('securityManager');
}
Returns the security manager component.
getStatePersister() method
public CStatePersister getStatePersister() | ||
{return} | CStatePersister | the state persister application component. |
public function getStatePersister()
{
return $this->getComponent('statePersister');
}
Returns the state persister component.
getTimeZone() method
public string getTimeZone() | ||
{return} | string | the time zone used by this application. |
public function getTimeZone()
{
return date_default_timezone_get();
}
Returns the time zone used by this application. This is a simple wrapper of PHP function date_default_timezone_get().
getUrlManager() method
public CUrlManager getUrlManager() | ||
{return} | CUrlManager | the URL manager component |
public function getUrlManager()
{
return $this->getComponent('urlManager');
}
Returns the URL manager component.
handleError() method
public void handleError(integer $code, string $message, string $file, integer $line) | ||
$code | integer | the level of the error raised |
$message | string | the error message |
$file | string | the filename that the error was raised in |
$line | integer | the line number the error was raised at |
public function handleError($code,$message,$file,$line)
{
if($code & error_reporting())
{
// disable error capturing to avoid recursive errors
restore_error_handler();
restore_exception_handler();
$log="$message ($file:$line)\nStack trace:\n";
$trace=debug_backtrace();
// skip the first 3 stacks as they do not tell the error position
if(count($trace)>3)
$trace=array_slice($trace,3);
foreach($trace as $i=>$t)
{
if(!isset($t['file']))
$t['file']='unknown';
if(!isset($t['line']))
$t['line']=0;
if(!isset($t['function']))
$t['function']='unknown';
$log.="#$i{$t['file']}({$t['line']}): ";
if(isset($t['object']) && is_object($t['object']))
$log.=get_class($t['object']).'->';
$log.="{$t['function']}()\n";
}
if(isset($_SERVER['REQUEST_URI']))
$log.='REQUEST_URI='.$_SERVER['REQUEST_URI'];
Yii::log($log,CLogger::LEVEL_ERROR,'php');
try
{
Yii::import('CErrorEvent',true);
$event=new CErrorEvent($this,$code,$message,$file,$line);
$this->onError($event);
if(!$event->handled)
{
// try an error handler
if(($handler=$this->getErrorHandler())!==null)
$handler->handle($event);
else
$this->displayError($code,$message,$file,$line);
}
}
catch(Exception $e)
{
$this->displayException($e);
}
try
{
$this->end(1);
}
catch(Exception $e)
{
// use the most primitive way to log error
$msg = get_class($e).': '.$e->getMessage().' ('.$e->getFile().':'.$e->getLine().")\n";
$msg .= $e->getTraceAsString()."\n";
$msg .= "Previous error:\n";
$msg .= $log."\n";
$msg .= '$_SERVER='.var_export($_SERVER,true);
error_log($msg);
exit(1);
}
}
}
Handles PHP execution errors such as warnings, notices.
This method is implemented as a PHP error handler. It requires that constant YII_ENABLE_ERROR_HANDLER be defined true.
This method will first raise an onError event. If the error is not handled by any event handler, it will call errorHandler to process the error.
The application will be terminated by this method.
handleException() method
public void handleException(Exception $exception) | ||
$exception | Exception | exception that is not caught |
public function handleException($exception)
{
// disable error capturing to avoid recursive errors
restore_error_handler();
restore_exception_handler();
$category='exception.'.get_class($exception);
if($exception instanceof CHttpException)
$category.='.'.$exception->statusCode;
// php <5.2 doesn't support string conversion auto-magically
$message=$exception->__toString();
if(isset($_SERVER['REQUEST_URI']))
$message.="\nREQUEST_URI=".$_SERVER['REQUEST_URI'];
if(isset($_SERVER['HTTP_REFERER']))
$message.="\nHTTP_REFERER=".$_SERVER['HTTP_REFERER'];
$message.="\n---";
Yii::log($message,CLogger::LEVEL_ERROR,$category);
try
{
$event=new CExceptionEvent($this,$exception);
$this->onException($event);
if(!$event->handled)
{
// try an error handler
if(($handler=$this->getErrorHandler())!==null)
$handler->handle($event);
else
$this->displayException($exception);
}
}
catch(Exception $e)
{
$this->displayException($e);
}
try
{
$this->end(1);
}
catch(Exception $e)
{
// use the most primitive way to log error
$msg = get_class($e).': '.$e->getMessage().' ('.$e->getFile().':'.$e->getLine().")\n";
$msg .= $e->getTraceAsString()."\n";
$msg .= "Previous exception:\n";
$msg .= get_class($exception).': '.$exception->getMessage().' ('.$exception->getFile().':'.$exception->getLine().")\n";
$msg .= $exception->getTraceAsString()."\n";
$msg .= '$_SERVER='.var_export($_SERVER,true);
error_log($msg);
exit(1);
}
}
Handles uncaught PHP exceptions.
This method is implemented as a PHP exception handler. It requires that constant YII_ENABLE_EXCEPTION_HANDLER be defined true.
This method will first raise an onException event. If the exception is not handled by any event handler, it will call errorHandler to process the exception.
The application will be terminated by this method.
initSystemHandlers() method
protected void initSystemHandlers() |
protected function initSystemHandlers()
{
if(YII_ENABLE_EXCEPTION_HANDLER)
set_exception_handler(array($this,'handleException'));
if(YII_ENABLE_ERROR_HANDLER)
set_error_handler(array($this,'handleError'),error_reporting());
}
Initializes the error handlers.
loadGlobalState() method
public void loadGlobalState() |
public function loadGlobalState()
{
$persister=$this->getStatePersister();
if(($this->_globalState=$persister->load())===null)
$this->_globalState=array();
$this->_stateChanged=false;
$this->detachEventHandler('onEndRequest',array($this,'saveGlobalState'));
}
Loads the global state data from persistent storage.
See Also
onBeginRequest() method
public void onBeginRequest(CEvent $event) | ||
$event | CEvent | the event parameter |
public function onBeginRequest($event)
{
$this->raiseEvent('onBeginRequest',$event);
}
Raised right BEFORE the application processes the request.
onEndRequest() method
public void onEndRequest(CEvent $event) | ||
$event | CEvent | the event parameter |
public function onEndRequest($event)
{
if(!$this->_ended)
{
$this->_ended=true;
$this->raiseEvent('onEndRequest',$event);
}
}
Raised right AFTER the application processes the request.
onError() method
public void onError(CErrorEvent $event) | ||
$event | CErrorEvent | event parameter |
public function onError($event)
{
$this->raiseEvent('onError',$event);
}
Raised when a PHP execution error occurs.
An event handler can set the handled property of the event parameter to be true to indicate no further error handling is needed. Otherwise, the errorHandler application component will continue processing the error.
onException() method
public void onException(CExceptionEvent $event) | ||
$event | CExceptionEvent | event parameter |
public function onException($event)
{
$this->raiseEvent('onException',$event);
}
Raised when an uncaught PHP exception occurs.
An event handler can set the handled property of the event parameter to be true to indicate no further error handling is needed. Otherwise, the errorHandler application component will continue processing the error.
processRequest() method
abstract public void processRequest() |
Processes the request. This is the place where the actual request processing work is done. Derived classes should override this method.
registerCoreComponents() method
protected void registerCoreComponents() |
protected function registerCoreComponents()
{
$components=array(
'coreMessages'=>array(
'class'=>'CPhpMessageSource',
'language'=>'en_us',
'basePath'=>YII_PATH.DIRECTORY_SEPARATOR.'messages',
),
'db'=>array(
'class'=>'CDbConnection',
),
'messages'=>array(
'class'=>'CPhpMessageSource',
),
'errorHandler'=>array(
'class'=>'CErrorHandler',
),
'securityManager'=>array(
'class'=>'CSecurityManager',
),
'statePersister'=>array(
'class'=>'CStatePersister',
),
'urlManager'=>array(
'class'=>'CUrlManager',
),
'request'=>array(
'class'=>'CHttpRequest',
),
'format'=>array(
'class'=>'CFormatter',
),
);
$this->setComponents($components);
}
Registers the core application components.
See Also
run() method
public void run() |
public function run()
{
if($this->hasEventHandler('onBeginRequest'))
$this->onBeginRequest(new CEvent($this));
register_shutdown_function(array($this,'end'),0,false);
$this->processRequest();
if($this->hasEventHandler('onEndRequest'))
$this->onEndRequest(new CEvent($this));
}
Runs the application. This method loads static application components. Derived classes usually overrides this method to do more application-specific tasks. Remember to call the parent implementation so that static application components are loaded.
saveGlobalState() method
public void saveGlobalState() |
public function saveGlobalState()
{
if($this->_stateChanged)
{
$this->_stateChanged=false;
$this->detachEventHandler('onEndRequest',array($this,'saveGlobalState'));
$this->getStatePersister()->save($this->_globalState);
}
}
Saves the global state data into persistent storage.
See Also
setBasePath() method
public void setBasePath(string $path) | ||
$path | string | the root directory of the application. |
public function setBasePath($path)
{
if(($this->_basePath=realpath($path))===false || !is_dir($this->_basePath))
throw new CException(Yii::t('yii','Application base path "{path}" is not a valid directory.',
array('{path}'=>$path)));
}
Sets the root directory of the application. This method can only be invoked at the begin of the constructor.
setExtensionPath() method
public void setExtensionPath(string $path) | ||
$path | string | the directory that contains all third-party extensions. |
public function setExtensionPath($path)
{
if(($extensionPath=realpath($path))===false || !is_dir($extensionPath))
throw new CException(Yii::t('yii','Extension path "{path}" does not exist.',
array('{path}'=>$path)));
Yii::setPathOfAlias('ext',$extensionPath);
}
Sets the root directory that holds all third-party extensions.
setGlobalState() method
public void setGlobalState(string $key, mixed $value, mixed $defaultValue=NULL) | ||
$key | string | the name of the value to be saved |
$value | mixed | the global value to be saved. It must be serializable. |
$defaultValue | mixed | the default value. If the named global value is the same as this value, it will be cleared from the current storage. |
public function setGlobalState($key,$value,$defaultValue=null)
{
if($this->_globalState===null)
$this->loadGlobalState();
$changed=$this->_stateChanged;
if($value===$defaultValue)
{
if(isset($this->_globalState[$key]))
{
unset($this->_globalState[$key]);
$this->_stateChanged=true;
}
}
elseif(!isset($this->_globalState[$key]) || $this->_globalState[$key]!==$value)
{
$this->_globalState[$key]=$value;
$this->_stateChanged=true;
}
if($this->_stateChanged!==$changed)
$this->attachEventHandler('onEndRequest',array($this,'saveGlobalState'));
}
Sets a global value.
A global value is one that is persistent across users sessions and requests. Make sure that the value is serializable and unserializable.
See Also
setHomeUrl() method
public void setHomeUrl(string $value) | ||
$value | string | the homepage URL |
public function setHomeUrl($value)
{
$this->_homeUrl=$value;
}
setId() method
public void setId(string $id) | ||
$id | string | the unique identifier for the application. |
public function setId($id)
{
$this->_id=$id;
}
Sets the unique identifier for the application.
setLanguage() method
public void setLanguage(string $language) | ||
$language | string | the user language (e.g. 'en_US', 'zh_CN'). If it is null, the sourceLanguage will be used. |
public function setLanguage($language)
{
$this->_language=$language;
}
Specifies which language the application is targeted to.
This is the language that the application displays to end users. If set null, it uses the source language.
Unless your application needs to support multiple languages, you should always set this language to null to maximize the application's performance.
setLocaleDataPath() method (available since v1.1.0)
public void setLocaleDataPath(string $value) | ||
$value | string | the directory that contains the locale data. |
public function setLocaleDataPath($value)
{
$property=new ReflectionProperty($this->localeClass,'dataPath');
$property->setValue($value);
}
Sets the directory that contains the locale data.
setRuntimePath() method
public void setRuntimePath(string $path) | ||
$path | string | the directory that stores runtime files. |
public function setRuntimePath($path)
{
if(($runtimePath=realpath($path))===false || !is_dir($runtimePath) || !is_writable($runtimePath))
throw new CException(Yii::t('yii','Application runtime path "{path}" is not valid. Please make sure it is a directory writable by the Web server process.',
array('{path}'=>$path)));
$this->_runtimePath=$runtimePath;
}
Sets the directory that stores runtime files.
setTimeZone() method
public void setTimeZone(string $value) | ||
$value | string | the time zone used by this application. |
public function setTimeZone($value)
{
date_default_timezone_set($value);
}
Sets the time zone used by this application. This is a simple wrapper of PHP function date_default_timezone_set().
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CApplication