Package | system.base |
---|---|
Inheritance | abstract class CApplication » CModule » CComponent |
Subclasses | CConsoleApplication, CWebApplication |
Since | 1.0 |
Source Code | framework/base/CApplication.php |
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 |
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 |
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 |
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 |
Returns the root path of the application.
Returns the relative URL for the application. This is a shortcut method to CHttpRequest::getBaseUrl().
Returns the cache component.
the charset currently used for the application. Defaults to 'UTF-8'.
the currently active controller. Null is returned in this base class.
Returns the core message translations component.
Returns the locale-dependent date formatter.
Returns the database connection component.
Returns the error handler component.
Returns the root directory that holds all third-party extensions.
Returns the formatter component.
the homepage URL
Returns the unique identifier for the application.
Returns the language that the user is using and the application should be targeted to.
Returns the locale instance.
the class used to get locale data. Defaults to 'CLocale'.
Returns the directory that contains the locale data.
Returns the application message translations component.
the application name. Defaults to 'My Application'.
the locale-dependent number formatter. The current application locale will be used.
Returns the request component.
Returns the directory that stores runtime files.
Returns the security manager component.
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).
Returns the state persister component.
Returns the time zone used by this application. This is a simple wrapper of PHP function date_default_timezone_get().
Returns the URL manager component.
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.
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.
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.
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.
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.
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.
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.
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").
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.
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().
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.
public CController getController()
| ||
{return} | CController | the currently active controller. Null is returned in this base class. |
public function getController()
{
return null;
}
public CPhpMessageSource getCoreMessages()
| ||
{return} | CPhpMessageSource | the core message translations |
public function getCoreMessages()
{
return $this->getComponent('coreMessages');
}
Returns the core message translations component.
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.
public CDbConnection getDb()
| ||
{return} | CDbConnection | the database connection |
public function getDb()
{
return $this->getComponent('db');
}
Returns the database connection component.
public CErrorHandler getErrorHandler()
| ||
{return} | CErrorHandler | the error handler application component. |
public function getErrorHandler()
{
return $this->getComponent('errorHandler');
}
Returns the error handler component.
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.
public CFormatter getFormat()
| ||
{return} | CFormatter | the formatter component |
public function getFormat()
{
return $this->getComponent('format');
}
Returns the formatter component.
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.
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;
}
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.
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.
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.
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.
public CMessageSource getMessages()
| ||
{return} | CMessageSource | the application message translations |
public function getMessages()
{
return $this->getComponent('messages');
}
Returns the application message translations component.
public CNumberFormatter getNumberFormatter()
| ||
{return} | CNumberFormatter | the locale-dependent number formatter. The current application locale will be used. |
public function getNumberFormatter()
{
return $this->getLocale()->getNumberFormatter();
}
public CHttpRequest getRequest()
| ||
{return} | CHttpRequest | the request component |
public function getRequest()
{
return $this->getComponent('request');
}
Returns the request component.
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.
public CSecurityManager getSecurityManager()
| ||
{return} | CSecurityManager | the security manager application component. |
public function getSecurityManager()
{
return $this->getComponent('securityManager');
}
Returns the security manager component.
public CStatePersister getStatePersister()
| ||
{return} | CStatePersister | the state persister application component. |
public function getStatePersister()
{
return $this->getComponent('statePersister');
}
Returns the state persister component.
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().
public CUrlManager getUrlManager()
| ||
{return} | CUrlManager | the URL manager component |
public function getUrlManager()
{
return $this->getComponent('urlManager');
}
Returns the URL manager component.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
public void setHomeUrl(string $value)
| ||
$value | string | the homepage URL |
public function setHomeUrl($value)
{
$this->_homeUrl=$value;
}
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.
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.
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.
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.
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().
Signup or Login in order to comment.