CApplication

优质
小牛编辑
136浏览
2023-12-01
所有包 | 属性 | 方法 | 事件
system.base
继承abstract class CApplication » CModule » CComponent
子类CConsoleApplication, CWebApplication
源自1.0
版本$Id: CApplication.php 3515 2011-12-28 12:29:24Z mdomba $
源码framework/base/CApplication.php
CApplication是所有应用程序类的基类。

一个应用程序服务在用户请求处理的全局范围内。 它负责为整个应用程序管理 提供具体功能的应用程序组件。

CApplication所提供的核心应用组件如下:
  • errorHandler: 处理PHP错误和错误异常。 这个应用组件在需要时动态加载。
  • securityManager: 提供安全相关的服务, 例如,哈希,加密功能。 这个应用组件在需要时动态加载。
  • statePersister: 提供全局的持久状态方法。 这个应用组件在需要时动态加载。
  • cache: 提供缓存功能。 这个应用组件默认是禁止的。
  • messages: 为翻译应用程序信息提供信息源。 这个应用组件在需要时动态加载。
  • coreMessages: 为翻译Yii框架信息提供信息源, 这个应用组件在需要时动态加载。


当处理用户请求时,CApplication将经历如下的生命周期:
  1. 加载应用程序配置;
  2. 设置类自动加载器和错误处理;
  3. 加载静态应用组件;
  4. onBeginRequest: 处理用户请求前;
  5. processRequest: 处理用户请求前;
  6. onEndRequest: 用户请求后处理(或后置处理用户请求);


从生命周期第3步开始,如果发生一个PHP错误或错误异常, 应用程序将切换到它的错误处理逻辑,并跳到第6步之后。

公共属性

隐藏继承属性

属性类型描述定义在
basePathstring返回应用程序的根目录。CApplication
baseUrlstring返回应用程序的相对URL。CApplication
behaviorsarraythe behaviors that should be attached to the module.CModule
cacheCCache返回缓存组件。CApplication
charsetstring应用程序当前使用的字符集。默认为‘UTF-8’。CApplication
componentsarray返回应用组件。CModule
controllerCController当前活动控制器。为Null返回它的基类。CApplication
coreMessagesCPhpMessageSource返回核心信息翻译组件。CApplication
dateFormatterCDateFormatter返回本地化的日期格式。CApplication
dbCDbConnection返回数据库连接组件。CApplication
errorHandlerCErrorHandler返回错误处理组件。CApplication
extensionPathstring返回第三方扩展根目录。CApplication
homeUrlstring主页URLCApplication
idstring返回应用程序的唯一标识符。CApplication
languagestring返回用户正在使用的应用程序语言。CApplication
localeCLocale返回本地(环境)实例。CApplication
localeDataPathstring返回包含本地化的数据目录。CApplication
messagesCMessageSource返回应用程序信息翻译组件。CApplication
modulePathstring返回包含应用程序模块的目录。CModule
modulesarray返回应用程序当前已经安装的模块。CModule
namestring应用程序名字。默认为‘My Application’。CApplication
numberFormatterCNumberFormatter本地化数字格式。 将使用当前application locale。CApplication
paramsCAttributeCollection返回用户定义的参数。CModule
parentModuleCModule返回父模块。CModule
preloadarraythe IDs of the application components that should be preloaded.CModule
requestCHttpRequest返回请求组件。CApplication
runtimePathstring返回存储运行时文件目录。CApplication
securityManagerCSecurityManager返回安全管理器组件。CApplication
sourceLanguagestring应用程序使用语言.CApplication
statePersisterCStatePersister返回持久状态组件。CApplication
timeZonestring返回应用程序所使用的时区。CApplication
urlManagerCUrlManager返回URL管理器组件。CApplication

公共方法

隐藏继承方法

方法描述定义在
__call()如果类中没有调的方法名,则调用这个方法。CComponent
__construct()构造器。CApplication
__get()getter魔术方法。CModule
__isset()检查一个属性值是否为null。CModule
__set()设置一个组件的属性值。CComponent
__unset()设置一个组件的属性为null。CComponent
asa()返回这个名字的行为对象。CComponent
attachBehavior()附加一个行为到组件。CComponent
attachBehaviors()附加一个行为列表到组件。CComponent
attachEventHandler()为事件附加一个事件处理程序。CComponent
canGetProperty()确定属性是否可读。CComponent
canSetProperty()确定属性是否可写。CComponent
clearGlobalState()清空一个全局值。CApplication
configure()为模块指定配置。CModule
createAbsoluteUrl()创建一个基于给定控制器和动作(信息)绝对的URL。CApplication
createUrl()创建一个基于给定控制器和动作(信息)相对的URL。CApplication
detachBehavior()从组件中分离一个行为。CComponent
detachBehaviors()从组件中分离所有行为。CComponent
detachEventHandler()分离一个存在的事件处理程序。CComponent
disableBehavior()禁用一个附加行为。CComponent
disableBehaviors()禁用组件附加的所有行为。CComponent
displayError()显示捕获的PHP错误。CApplication
displayException()显示未捕获的PHP异常。CApplication
enableBehavior()启用一个附加行为。CComponent
enableBehaviors()启用组件附加的所有行为。CComponent
end()终止应用程序。CApplication
evaluateExpression()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
findLocalizedFile()返回指定文件的本地化版本。CApplication
getBasePath()返回应用程序的根目录。CApplication
getBaseUrl()返回应用程序的相对URL。CApplication
getCache()返回缓存组件。CApplication
getComponent()Retrieves the named application component.CModule
getComponents()返回应用组件。CModule
getController()返回当前活动控制器。为Null返回它的基类。CApplication
getCoreMessages()返回核心信息翻译组件。CApplication
getDateFormatter()返回本地化的日期格式。CApplication
getDb()返回数据库连接组件。CApplication
getErrorHandler()返回错误处理组件。CApplication
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getExtensionPath()返回第三方扩展根目录。CApplication
getGlobalState()返回一个全局值CApplication
getHomeUrl()返回主页URLCApplication
getId()返回应用程序的唯一标识符。CApplication
getLanguage()返回用户正在使用的应用程序语言。CApplication
getLocale()返回本地(环境)实例。CApplication
getLocaleDataPath()返回包含本地化的数据目录。CApplication
getMessages()返回应用程序信息翻译组件。CApplication
getModule()检索指定的应用模块。CModule
getModulePath()返回包含应用程序模块的目录。CModule
getModules()返回应用程序当前已经安装的模块。CModule
getNumberFormatter()返回本地化数字格式。 将使用当前application locale。CApplication
getParams()返回用户定义的参数。CModule
getParentModule()返回父模块。CModule
getRequest()返回请求组件。CApplication
getRuntimePath()返回存储运行时文件目录。CApplication
getSecurityManager()返回安全管理器组件。CApplication
getStatePersister()返回持久状态组件。CApplication
getTimeZone()返回应用程序所使用的时区。CApplication
getUrlManager()返回URL管理器组件。CApplication
handleError()处理PHP异常错误,如警告,通知。CApplication
handleException()处理未捕获的PHP异常。CApplication
hasComponent()检查是否存在指定组件。CModule
hasEvent()确定一个事件是否定义。CComponent
hasEventHandler()检查事件是否有附加的处理程序。CComponent
hasModule()检查是否已经安装了指定模块。CModule
hasProperty()确定属性是否被定义。CComponent
loadGlobalState()从持久存储加载全局状态数据。CApplication
onBeginRequest()应用程序处理请求之前发起。CApplication
onEndRequest()应用程序处理请求之后发起。CApplication
onError()当一个PHP异常错误发生时发起。CApplication
onException()当一个未捕获的PHP异常发生时发起。CApplication
processRequest()处理请求。CApplication
raiseEvent()发起一个事件。CComponent
run()运行应用程序。CApplication
saveGlobalState()保存全局状态数据到持久存储。CApplication
setAliases()定义根目录的别名。CModule
setBasePath()设置应用程序根目录。CApplication
setComponent()添加一个组件到模块中CModule
setComponents()设置应用组件。CModule
setExtensionPath()设置第三方扩展目录。CApplication
setGlobalState()设置一个全局值。CApplication
setHomeUrl()设置设置主页URLCApplication
setId()设置应用程序唯一的标识符。CApplication
setImport()设置在模块中使用的路径别名。CModule
setLanguage()指定应用程序语言。CApplication
setLocaleDataPath()设置包含本地化数据的目录。CApplication
setModulePath()设置包含应用程序模块的目录。CModule
setModules()配置模块的子模块。CModule
setParams()设置用户定义的参数。CModule
setRuntimePath()设置存储运行时文件目录。CApplication
setTimeZone()设置应用程序所使用的时区。CApplication

受保护方法

隐藏继承方法

方法描述定义在
init()初始化模块。CModule
initSystemHandlers()初始化类自动加载器和错误处理。CApplication
preinit()模块预初始化。CModule
preloadComponents()加载静态应用组件。CModule
registerCoreComponents()注册核心应用组件。CApplication

事件

隐藏继承事件

事件描述定义在
onBeginRequest应用程序处理请求之前发起。CApplication
onEndRequest应用程序处理请求之后发起。CApplication
onException当一个未捕获的PHP异常发生时发起。CApplication
onError当一个PHP异常错误发生时发起。CApplication

属性详细

basePath 属性 public string getBasePath()
public void setBasePath(string $path)

返回应用程序的根目录。

baseUrl 属性 只读 public string getBaseUrl(boolean $absolute=false)

返回应用程序的相对URL。 快捷方法就是CHttpRequest::getBaseUrl()。

参见

  • CHttpRequest::getBaseUrl()
cache 属性 只读 public CCache getCache()

返回缓存组件。

charset 属性 public string $charset;

应用程序当前使用的字符集。默认为‘UTF-8’。

controller 属性 只读 (可用自 v1.1.8) public CController getController()

当前活动控制器。为Null返回它的基类。

coreMessages 属性 只读 public CPhpMessageSource getCoreMessages()

返回核心信息翻译组件。

dateFormatter 属性 只读 public CDateFormatter getDateFormatter()

返回本地化的日期格式。

db 属性 只读 public CDbConnection getDb()

返回数据库连接组件。

errorHandler 属性 只读 public CErrorHandler getErrorHandler()

返回错误处理组件。

extensionPath 属性 public string getExtensionPath()
public void setExtensionPath(string $path)

返回第三方扩展根目录。

homeUrl 属性 public string getHomeUrl()
public void setHomeUrl(string $value)

主页URL

id 属性 public string getId()
public void setId(string $id)

返回应用程序的唯一标识符。

language 属性 public string getLanguage()
public void setLanguage(string $language)

返回用户正在使用的应用程序语言。

locale 属性 只读 public CLocale getLocale(string $localeID=NULL)

返回本地(环境)实例。

localeDataPath 属性 (可用自 v1.1.0) public string getLocaleDataPath()
public void setLocaleDataPath(string $value)

返回包含本地化的数据目录。

messages 属性 只读 public CMessageSource getMessages()

返回应用程序信息翻译组件。

name 属性 public string $name;

应用程序名字。默认为‘My Application’。

numberFormatter 属性 只读 public CNumberFormatter getNumberFormatter()

本地化数字格式。 将使用当前application locale。

request 属性 只读 public CHttpRequest getRequest()

返回请求组件。

runtimePath 属性 public string getRuntimePath()
public void setRuntimePath(string $path)

返回存储运行时文件目录。

securityManager 属性 只读 public CSecurityManager getSecurityManager()

返回安全管理器组件。

sourceLanguage 属性 public string $sourceLanguage;

应用程序使用语言. 这个语言主要指信息和视图文件中的语言。 默认是‘en_us’(US English)。

statePersister 属性 只读 public CStatePersister getStatePersister()

返回持久状态组件。

timeZone 属性 public string getTimeZone()
public void setTimeZone(string $value)

返回应用程序所使用的时区。 这个一个简单的PHP函数date_default_timezone_get()的封装。

参见

  • http://php.net/manual/en/function.date-default-timezone-get.php
urlManager 属性 只读 public CUrlManager getUrlManager()

返回URL管理器组件。

方法详细

__construct() 方法
public void __construct(mixed $config=NULL)
$configmixed应用程序配置。 如果是一个字符串,它将被当作包含配置的文件路径; 如果是一个数组,它将被当作具体的配置信息, 你确保在配置文件中指定basePath属性, 它通常应该指向含所有的应用程序逻辑、模板和数据的目录包。 如果没有,那么默认将指定为‘protected’目录。
源码: framework/base/CApplication.php#121 (显示) publicfunction__construct($config=null)
{
Yii::setApplication($this);

//setbasePathatearlyaspossibletoavoidtrouble
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']));
Yii::setPathOfAlias('ext',$this->getBasePath().DIRECTORY_SEPARATOR.'extensions');

$this->preinit();

$this->initSystemHandlers();
$this->registerCoreComponents();

$this->configure($config);
$this->attachBehaviors($this->behaviors);
$this->preloadComponents();

$this->init();
}

构造器。

clearGlobalState() 方法
public void clearGlobalState(string $key)
$keystring要清除的值的名称
源码: framework/base/CApplication.php#639 (显示) publicfunctionclearGlobalState($key)
{
$this->setGlobalState($key,true,true);
}

清空一个全局值。

被清除的值在这次请求或随后的请求中不可使用。

createAbsoluteUrl() 方法
public string createAbsoluteUrl(string $route, array $params=array ( ), string $schema='', string $ampersand='&')
$routestringURL路由。它的格式应该是:‘ControllerID/ActionID’。
$paramsarray附加的GET参数(name=>value)。名称和值会被URL-encoded(URL编码)。
$schemastring要使用的模式(例如: http,https)。如果为空,schema使用当前请求使用的模式。
$ampersandstringURL中name-value对的分隔标记。
{return}string已构造的URL
源码: framework/base/CApplication.php#535 (显示) publicfunctioncreateAbsoluteUrl($route,$params=array(),$schema='',$ampersand='&')
{
$url=$this->createUrl($route,$params,$ampersand);
if(strpos($url,'http')===0)
return$url;
else
return$this->getRequest()->getHostInfo($schema).$url;
}

创建一个基于给定控制器和动作(信息)绝对的URL。

createUrl() 方法
public string createUrl(string $route, array $params=array ( ), string $ampersand='&')
$routestringURL路由。它的格式应该是:‘ControllerID/ActionID’。
$paramsarray附加的GET参数(name=>value)。名称和值会被URL-encoded(URL编码)。
$ampersandstringURL中name-value对的分隔标记。
{return}string已构造的URL
源码: framework/base/CApplication.php#522 (显示) publicfunctioncreateUrl($route,$params=array(),$ampersand='&')
{
return$this->getUrlManager()->createUrl($route,$params,$ampersand);
}

创建一个基于给定控制器和动作(信息)相对的URL。

displayError() 方法
public void displayError(integer $code, string $message, string $file, string $line)
$codeinteger错误代码
$messagestring错误信息
$filestringerror 错误文件
$linestringerror 错误行号
源码: framework/base/CApplication.php#864 (显示) publicfunctiondisplayError($code,$message,$file,$line)
{
if(YII_DEBUG)
{
echo"<h1>PHPError[$code]</h1>n";
echo"<p>$message($file:$line)</p>n";
echo'<pre>';

$trace=debug_backtrace();
//skipthefirst3stacksastheydonottelltheerrorposition
if(count($trace)>3)
$trace=array_slice($trace,3);
foreach($traceas$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']))
echoget_class($t['object']).'->';
echo"{$t['function']}()n";
}

echo'</pre>';
}
else
{
echo"<h1>PHPError[$code]</h1>n";
echo"<p>$message</p>n";
}
}

显示捕获的PHP错误。 当没有激活错误处理时, 这个方将在HTML显示错误。

displayException() 方法
public void displayException(Exception $exception)
$exceptionException未捕获的异常
源码: framework/base/CApplication.php#905 (显示) publicfunctiondisplayException($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>';
}
}

显示未捕获的PHP异常。 当没有激活错误处理时, 这个方法将在HTML显示未捕获异常。

end() 方法
public void end(integer $status=0, boolean $exit=true)
$statusinteger退出状态(0代表正常退出,其它值表示异常退出)。
$exitboolean是否要退出当前的请求。这个参数可用自1.1.5。 如果默认为ture,意味着将在这个方法结束时调用PHP的exit()函数。
源码: framework/base/CApplication.php#175 (显示) publicfunctionend($status=0,$exit=true)
{
if($this->hasEventHandler('onEndRequest'))
$this->onEndRequest(newCEvent($this));
if($exit)
exit($status);
}

终止应用程序。 这个方法通过在退出前调用onEndRequest 替换PHP的exit()方法。

findLocalizedFile() 方法
public string findLocalizedFile(string $srcFile, string $srcLanguage=NULL, string $language=NULL)
$srcFilestring原文件
$srcLanguagestring原文件中的语言,如果为null,将使用source language。
$languagestring所需要的本地语言.如果为null, 将使用application language。
{return}string匹配的本地化文件。如果没有本地化文件或如果源语言和要求语言相同, 将返回原始文件。
源码: framework/base/CApplication.php#364 (显示) publicfunctionfindLocalizedFile($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);
returnis_file($desiredFile)?$desiredFile:$srcFile;
}

返回指定文件的本地化版本。

基于指定语言代码搜索。 特别是,具有相同名称的文件将在以本地ID命名子目录下查找。 例如。给定文件“path/to/view.php”和本地ID标识:“zh_cn”, 本地化文件将以这种形式查找“path/to/zh_cn/view.php”。 如果该文件没有找到, 将返回原始文件。

为了保持一致性,建议本地语言id使用小写格式 LanguageID_RegionID(例如,“en_us”)。

getBasePath() 方法
public string getBasePath()
{return}string应用程序的根目录。默认为‘protected’。
源码: framework/base/CApplication.php#230 (显示) publicfunctiongetBasePath()
{
return$this->_basePath;
}

返回应用程序的根目录。

getBaseUrl() 方法
public string getBaseUrl(boolean $absolute=false)
$absoluteboolean是否返回一个绝对URL。默认为false,意味着返回一个相对的URL。
{return}string相关URL的应用。
源码: framework/base/CApplication.php#551 (显示) publicfunctiongetBaseUrl($absolute=false)
{
return$this->getRequest()->getBaseUrl($absolute);
}

返回应用程序的相对URL。 快捷方法就是CHttpRequest::getBaseUrl()。

参见

  • CHttpRequest::getBaseUrl()
getCache() 方法
public CCache getCache()
{return}CCache应用程序缓存组件。null为不启用这个组件。
源码: framework/base/CApplication.php#465 (显示) publicfunctiongetCache()
{
return$this->getComponent('cache');
}

返回缓存组件。

getController() 方法 (可用自 v1.1.8)
public CController getController()
{return}CController当前活动控制器。为Null返回它的基类。
源码: framework/base/CApplication.php#510 (显示) publicfunctiongetController()
{
returnnull;
}
getCoreMessages() 方法
public CPhpMessageSource getCoreMessages()
{return}CPhpMessageSource核心信息翻译
源码: framework/base/CApplication.php#474 (显示) publicfunctiongetCoreMessages()
{
return$this->getComponent('coreMessages');
}

返回核心信息翻译组件。

getDateFormatter() 方法
public CDateFormatter getDateFormatter()
{return}CDateFormatter本地化的日期格式。 将会使用当前application locale。
源码: framework/base/CApplication.php#420 (显示) publicfunctiongetDateFormatter()
{
return$this->getLocale()->getDateFormatter();
}

返回本地化的日期格式。

getDb() 方法
public CDbConnection getDb()
{return}CDbConnection数据库连接
源码: framework/base/CApplication.php#429 (显示) publicfunctiongetDb()
{
return$this->getComponent('db');
}

返回数据库连接组件。

getErrorHandler() 方法
public CErrorHandler getErrorHandler()
{return}CErrorHandler错误处理应用程序组件。
源码: framework/base/CApplication.php#438 (显示) publicfunctiongetErrorHandler()
{
return$this->getComponent('errorHandler');
}

返回错误处理组件。

getExtensionPath() 方法
public string getExtensionPath()
{return}string包含所有扩展的目录。默认是‘protected’下的‘extensions’目录。
源码: framework/base/CApplication.php#280 (显示) publicfunctiongetExtensionPath()
{
returnYii::getPathOfAlias('ext');
}

返回第三方扩展根目录。

getGlobalState() 方法
public mixed getGlobalState(string $key, mixed $defaultValue=NULL)
$keystring要返回的值的名称
$defaultValuemixed默认值。如果该名称的全局值没有找到,将返回默认值。
{return}mixed全局值的名称
源码: framework/base/CApplication.php#589 (显示) publicfunctiongetGlobalState($key,$defaultValue=null)
{
if($this->_globalState===null)
$this->loadGlobalState();
if(isset($this->_globalState[$key]))
return$this->_globalState[$key];
else
return$defaultValue;
}

返回一个全局值

一个全局值,持续在是用户的sessions与requests之间。

参见

  • setGlobalState
getHomeUrl() 方法
public string getHomeUrl()
{return}string主页URL
源码: framework/base/CApplication.php#559 (显示) publicfunctiongetHomeUrl()
{
if($this->_homeUrl===null)
{
if($this->getUrlManager()->showScriptName)
return$this->getRequest()->getScriptUrl();
else
return$this->getRequest()->getBaseUrl().'/';
}
else
return$this->_homeUrl;
}
getId() 方法
public string getId()
{return}string$id 应用程序唯一的标识符。
源码: framework/base/CApplication.php#209 (显示) publicfunctiongetId()
{
if($this->_id!==null)
return$this->_id;
else
return$this->_id=sprintf('%x',crc32($this->getBasePath().$this->name));
}

返回应用程序的唯一标识符。

getLanguage() 方法
public string getLanguage()
{return}string用户正在使用的应用程序语言。 默认为source language。
源码: framework/base/CApplication.php#302 (显示) publicfunctiongetLanguage()
{
return$this->_language===null?$this->sourceLanguage:$this->_language;
}

返回用户正在使用的应用程序语言。

getLocale() 方法
public CLocale getLocale(string $localeID=NULL)
$localeIDstring本地(环境)实例ID(例如,en_US)。如果null,将使用application language ID。
{return}CLocale本地(环境)实例
源码: framework/base/CApplication.php#381 (显示) publicfunctiongetLocale($localeID=null)
{
returnCLocale::getInstance($localeID===null?$this->getLanguage():$localeID);
}

返回本地(环境)实例。

getLocaleDataPath() 方法 (可用自 v1.1.0)
public string getLocaleDataPath()
{return}string包含本地的数据化目录。默认为‘framework/i18n/data’。
源码: framework/base/CApplication.php#391 (显示) publicfunctiongetLocaleDataPath()
{
returnCLocale::$dataPath===null?Yii::getPathOfAlias('system.i18n.data'):CLocale::$dataPath;
}

返回包含本地化的数据目录。

getMessages() 方法
public CMessageSource getMessages()
{return}CMessageSource应用程序信息翻译组件
源码: framework/base/CApplication.php#483 (显示) publicfunctiongetMessages()
{
return$this->getComponent('messages');
}

返回应用程序信息翻译组件。

getNumberFormatter() 方法
public CNumberFormatter getNumberFormatter()
{return}CNumberFormatter本地化数字格式。 将使用当前application locale。
源码: framework/base/CApplication.php#410 (显示) publicfunctiongetNumberFormatter()
{
return$this->getLocale()->getNumberFormatter();
}
getRequest() 方法
public CHttpRequest getRequest()
{return}CHttpRequest请求组件
源码: framework/base/CApplication.php#492 (显示) publicfunctiongetRequest()
{
return$this->getComponent('request');
}

返回请求组件。

getRuntimePath() 方法
public string getRuntimePath()
{return}string存储运行时文件目录。默认为‘protected/runtime’。
源码: framework/base/CApplication.php#252 (显示) publicfunctiongetRuntimePath()
{
if($this->_runtimePath!==null)
return$this->_runtimePath;
else
{
$this->setRuntimePath($this->getBasePath().DIRECTORY_SEPARATOR.'runtime');
return$this->_runtimePath;
}
}

返回存储运行时文件目录。

getSecurityManager() 方法
public CSecurityManager getSecurityManager()
{return}CSecurityManager安全管理器组件。
源码: framework/base/CApplication.php#447 (显示) publicfunctiongetSecurityManager()
{
return$this->getComponent('securityManager');
}

返回安全管理器组件。

getStatePersister() 方法
public CStatePersister getStatePersister()
{return}CStatePersister持久状态组件。
源码: framework/base/CApplication.php#456 (显示) publicfunctiongetStatePersister()
{
return$this->getComponent('statePersister');
}

返回持久状态组件。

getTimeZone() 方法
public string getTimeZone()
{return}string应用程序使用的时区。
源码: framework/base/CApplication.php#329 (显示) publicfunctiongetTimeZone()
{
returndate_default_timezone_get();
}

返回应用程序所使用的时区。 这个一个简单的PHP函数date_default_timezone_get()的封装。

参见

  • http://php.net/manual/en/function.date-default-timezone-get.php
getUrlManager() 方法
public CUrlManager getUrlManager()
{return}CUrlManagerURL管理器组件
源码: framework/base/CApplication.php#501 (显示) publicfunctiongetUrlManager()
{
return$this->getComponent('urlManager');
}

返回URL管理器组件。

handleError() 方法
public void handleError(integer $code, string $message, string $file, integer $line)
$codeinteger发起错误的等级
$messagestring发起错误的信息
$filestring发起错误的文件
$lineinteger发起错误的行号
源码: framework/base/CApplication.php#758 (显示) publicfunctionhandleError($code,$message,$file,$line)
{
if($code&error_reporting())
{
//disableerrorcapturingtoavoidrecursiveerrors
restore_error_handler();
restore_exception_handler();

$log="$message($file:$line)nStacktrace:n";
$trace=debug_backtrace();
//skipthefirst3stacksastheydonottelltheerrorposition
if(count($trace)>3)
$trace=array_slice($trace,3);
foreach($traceas$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=newCErrorEvent($this,$code,$message,$file,$line);
$this->onError($event);
if(!$event->handled)
{
//tryanerrorhandler
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)
{
//usethemostprimitivewaytologerror
$msg=get_class($e).':'.$e->getMessage().'('.$e->getFile().':'.$e->getLine().")n";
$msg.=$e->getTraceAsString()."n";
$msg.="Previouserror:n";
$msg.=$log."n";
$msg.='$_SERVER='.var_export($_SERVER,true);
error_log($msg);
exit(1);
}
}
}

处理PHP异常错误,如警告,通知。

这个方法实现了一个PHP的错误处理。 它需要常量YII_ENABLE_ERROR_HANDLER被定义为true。

这个方法将首先发起一个onError事件。 如果该错误没有被任何事件处理程序处理,它将调用 errorHandler处理错误。

应用程序将被此方法终止。

handleException() 方法
public void handleException(Exception $exception)
$exceptionException异常没有被捕获
源码: framework/base/CApplication.php#687 (显示) publicfunctionhandleException($exception)
{
//disableerrorcapturingtoavoidrecursiveerrors
restore_error_handler();
restore_exception_handler();

$category='exception.'.get_class($exception);
if($exceptioninstanceofCHttpException)
$category.='.'.$exception->statusCode;
//php<5.2doesn'tsupportstringconversionauto-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=newCExceptionEvent($this,$exception);
$this->onException($event);
if(!$event->handled)
{
//tryanerrorhandler
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)
{
//usethemostprimitivewaytologerror
$msg=get_class($e).':'.$e->getMessage().'('.$e->getFile().':'.$e->getLine().")n";
$msg.=$e->getTraceAsString()."n";
$msg.="Previousexception: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);
}
}

处理未捕获的PHP异常。

这个方法实现了一个PHP的异常处理。 它需要它需要常量YII_ENABLE_EXCEPTION_HANDLER被定义为true.

这个方法将首先发起一个onException事件。 如果异常没有被任何事件处理程序处理,它将调用 errorHandler处理异常。

应用程序将被此方法终止。

initSystemHandlers() 方法
protected void initSystemHandlers()
源码: framework/base/CApplication.php#923 (显示) protectedfunctioninitSystemHandlers()
{
if(YII_ENABLE_EXCEPTION_HANDLER)
set_exception_handler(array($this,'handleException'));
if(YII_ENABLE_ERROR_HANDLER)
set_error_handler(array($this,'handleError'),error_reporting());
}

初始化类自动加载器和错误处理。

loadGlobalState() 方法
public void loadGlobalState()
源码: framework/base/CApplication.php#649 (显示) publicfunctionloadGlobalState()
{
$persister=$this->getStatePersister();
if(($this->_globalState=$persister->load())===null)
$this->_globalState=array();
$this->_stateChanged=false;
$this->detachEventHandler('onEndRequest',array($this,'saveGlobalState'));
}

从持久存储加载全局状态数据。

参见

  • getStatePersister
onBeginRequest() 方法
public void onBeginRequest(CEvent $event)
$eventCEvent事件参数
源码: framework/base/CApplication.php#187 (显示) publicfunctiononBeginRequest($event)
{
$this->raiseEvent('onBeginRequest',$event);
}

应用程序处理请求之前发起。

onEndRequest() 方法
public void onEndRequest(CEvent $event)
$eventCEvent事件参数
源码: framework/base/CApplication.php#196 (显示) publicfunctiononEndRequest($event)
{
if(!$this->_ended)
{
$this->_ended=true;
$this->raiseEvent('onEndRequest',$event);
}
}

应用程序处理请求之后发起。

onError() 方法
public void onError(CErrorEvent $event)
$eventCErrorEvent事件参数
源码: framework/base/CApplication.php#850 (显示) publicfunctiononError($event)
{
$this->raiseEvent('onError',$event);
}

当一个PHP异常错误发生时发起。

可以设置一个事件处理handled, 事件参数的属性为true表示不再需要进一步处理错误。 否则,errorHandler 应用组件将继续处理错误。

onException() 方法
public void onException(CExceptionEvent $event)
$eventCExceptionEvent事件参数
源码: framework/base/CApplication.php#835 (显示) publicfunctiononException($event)
{
$this->raiseEvent('onException',$event);
}

当一个未捕获的PHP异常发生时发起。

可以设置一个事件处理handled, 事件参数的属性为true表示不再需要进一步处理错误。 否则,errorHandler 应用组件将继续处理错误。

processRequest() 方法
abstract public void processRequest()
源码: framework/base/CApplication.php#110 (显示) abstractpublicfunctionprocessRequest();

处理请求。 这实际是请处理工作已经完成的地方。 派生类应该重写此方法。

registerCoreComponents() 方法
protected void registerCoreComponents()
源码: framework/base/CApplication.php#935 (显示) protectedfunctionregisterCoreComponents()
{
$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);
}

注册核心应用组件。

参见

  • setComponents
run() 方法
public void run()
源码: framework/base/CApplication.php#158 (显示) publicfunctionrun()
{
if($this->hasEventHandler('onBeginRequest'))
$this->onBeginRequest(newCEvent($this));
$this->processRequest();
if($this->hasEventHandler('onEndRequest'))
$this->onEndRequest(newCEvent($this));
}

运行应用程序。 此方法加载静态应用组件。 派生类通常重写此方法去做更多特定应用。 记住要调用父类实现,以使静态应用组件被加载。

saveGlobalState() 方法
public void saveGlobalState()
源码: framework/base/CApplication.php#663 (显示) publicfunctionsaveGlobalState()
{
if($this->_stateChanged)
{
$this->_stateChanged=false;
$this->detachEventHandler('onEndRequest',array($this,'saveGlobalState'));
$this->getStatePersister()->save($this->_globalState);
}
}

保存全局状态数据到持久存储。

参见

  • getStatePersister
setBasePath() 方法
public void setBasePath(string $path)
$pathstring应用程序根目录。
源码: framework/base/CApplication.php#241 (显示) publicfunctionsetBasePath($path)
{
if(($this->_basePath=realpath($path))===false||!is_dir($this->_basePath))
thrownewCException(Yii::t('yii','Applicationbasepath"{path}"isnotavaliddirectory.',
array('{path}'=>$path)));
}

设置应用程序根目录。 这个方法仅在构造函数时调用。

setExtensionPath() 方法
public void setExtensionPath(string $path)
$pathstring第三方扩展目录。
源码: framework/base/CApplication.php#289 (显示) publicfunctionsetExtensionPath($path)
{
if(($extensionPath=realpath($path))===false||!is_dir($extensionPath))
thrownewCException(Yii::t('yii','Extensionpath"{path}"doesnotexist.',
array('{path}'=>$path)));
Yii::setPathOfAlias('ext',$extensionPath);
}

设置第三方扩展目录。

setGlobalState() 方法
public void setGlobalState(string $key, mixed $value, mixed $defaultValue=NULL)
$keystring要保存的值的名称
$valuemixed被保存的全局值,它必须是序例化的。
$defaultValuemixed默认值。如果这个值与全局值上同,它将清除当前存储。
源码: framework/base/CApplication.php#609 (显示) publicfunctionsetGlobalState($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'));
}

设置一个全局值。

一个全局值,持续在是用户的sessions与requests之间。 确保这个值可以序例化和反序例化。

参见

  • getGlobalState
setHomeUrl() 方法
public void setHomeUrl(string $value)
$valuestring设置主页URL
源码: framework/base/CApplication.php#575 (显示) publicfunctionsetHomeUrl($value)
{
$this->_homeUrl=$value;
}
setId() 方法
public void setId(string $id)
$idstring应用程序唯一的标识符。
源码: framework/base/CApplication.php#221 (显示) publicfunctionsetId($id)
{
$this->_id=$id;
}

设置应用程序唯一的标识符。

setLanguage() 方法
public void setLanguage(string $language)
$languagestring用户的语言(例如,‘en_US’,‘zh_CN’)。 如果为null,将使用sourceLanguage。
源码: framework/base/CApplication.php#318 (显示) publicfunctionsetLanguage($language)
{
$this->_language=$language;
}

指定应用程序语言。

这个是应用程序显示最终用户的语言。 如果为null,它将使用source language。

除非你的应用程序需要支持多语言, 否则你应该总是设置language为null,以最大化应用程序的性能。

setLocaleDataPath() 方法 (可用自 v1.1.0)
public void setLocaleDataPath(string $value)
$valuestring包含本地化数据的目录。
源码: framework/base/CApplication.php#401 (显示) publicfunctionsetLocaleDataPath($value)
{
CLocale::$dataPath=$value;
}

设置包含本地化数据的目录。

setRuntimePath() 方法
public void setRuntimePath(string $path)
$pathstring存储运行时文件目录。
源码: framework/base/CApplication.php#268 (显示) publicfunctionsetRuntimePath($path)
{
if(($runtimePath=realpath($path))===false||!is_dir($runtimePath)||!is_writable($runtimePath))
thrownewCException(Yii::t('yii','Applicationruntimepath"{path}"isnotvalid.PleasemakesureitisadirectorywritablebytheWebserverprocess.',
array('{path}'=>$path)));
$this->_runtimePath=$runtimePath;
}

设置存储运行时文件目录。

setTimeZone() 方法
public void setTimeZone(string $value)
$valuestring应用程序使用的时区。
源码: framework/base/CApplication.php#340 (显示) publicfunctionsetTimeZone($value)
{
date_default_timezone_set($value);
}

设置应用程序所使用的时区。 这个一个简单的PHP函数date_default_timezone_set()的封装。

参见

  • http://php.net/manual/en/function.date-default-timezone-set.php