CConsoleApplication

优质
小牛编辑
128浏览
2023-12-01
所有包 | 属性 | 方法 | 事件
system.console
继承class CConsoleApplication » CApplication » CModule » CComponent
源自1.0
版本$Id: CConsoleApplication.php 3426 2011-10-25 00:01:09Z alexander.makarow $
源码framework/console/CConsoleApplication.php
CConsoleApplication代表一个控制台应用程序。

CConsoleApplication继承于CApplication,提供了一些功能来处理控制台请求。 一般来说,它通过基于命令的方法处理 那些那些控制台请求:
  • 一个控制台应用包含着一个或者多个可能的用户命令;
  • 每条用户命令都是以类的形式实现的,继承于CConsoleCommand;
  • 用户指定哪些命令会运行在命令行;
  • 命令程序根据指定的参数处理用户请求。


命令类是放在目录commandPath下面。 这些类的命名规则是:<command-name>Command,文件名字跟类的名字一样。 例如,‘ShellCommand’类定义了 一个‘shell’命令, 它的文件名字为’ShellCommand.php‘。

输入以下命令行来运行终端应用:
php path/to/entry_script.php <command name> [param 1] [param 2] ...


你可以使用下面命令来查看帮助介绍:
php path/to/entry_script.php help <command name>

公共属性

隐藏继承属性

属性类型描述定义在
basePathstring返回应用程序的根目录。CApplication
baseUrlstring返回应用程序的相对URL。CApplication
behaviorsarraythe behaviors that should be attached to the module.CModule
cacheCCache返回缓存组件。CApplication
charsetstring应用程序当前使用的字符集。默认为‘UTF-8’。CApplication
commandMaparray命令名字对应到命令配置。 每一个命令配置可以是字符串,或者是一个数组。 如果是前者,这个字符串应该是命令类的路径。 如果是后者,这个数组一定要包含‘class’元素 (指定 命令的类名或者是YiiBase::getPathOfAlias类的路径别名) 其余的在数组中的键名-键值对会被用来 初始化相关的命令属性。例如,
array('email'=>array(   'class'=>'path.
CConsoleApplication
commandPathstring包含命令类的目录。默认是‘protected/commands’。CConsoleApplication
commandRunnerCConsoleCommandRunner返回命令执行对象。CConsoleApplication
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 错误。CConsoleApplication
displayException()显示没有捕获到的异常。CConsoleApplication
enableBehavior()启用一个附加行为。CComponent
enableBehaviors()启用组件附加的所有行为。CComponent
end()终止应用程序。CApplication
evaluateExpression()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
findLocalizedFile()返回指定文件的本地化版本。CApplication
getBasePath()返回应用程序的根目录。CApplication
getBaseUrl()返回应用程序的相对URL。CApplication
getCache()返回缓存组件。CApplication
getCommandPath()返回包含命令类的目录。默认是‘protected/commands’。CConsoleApplication
getCommandRunner()返回命令执行对象。CConsoleApplication
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()处理用户请求。CConsoleApplication
raiseEvent()发起一个事件。CComponent
run()运行应用程序。CApplication
saveGlobalState()保存全局状态数据到持久存储。CApplication
setAliases()定义根目录的别名。CModule
setBasePath()设置应用程序根目录。CApplication
setCommandPath()设置包含命令类的目录。CConsoleApplication
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

受保护方法

隐藏继承方法

方法描述定义在
createCommandRunner()创建命令执行对象实例。CConsoleApplication
init()通过创建命令执行对象初始化这个应用。CConsoleApplication
initSystemHandlers()初始化类自动加载器和错误处理。CApplication
preinit()模块预初始化。CModule
preloadComponents()加载静态应用组件。CModule
registerCoreComponents()注册核心应用组件。CApplication

事件

隐藏继承事件

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

属性详细

commandMap 属性 public array $commandMap;

命令名字对应到命令配置。 每一个命令配置可以是字符串,或者是一个数组。 如果是前者,这个字符串应该是命令类的路径。 如果是后者,这个数组一定要包含‘class’元素 (指定 命令的类名或者是YiiBase::getPathOfAlias类的路径别名) 其余的在数组中的键名-键值对会被用来 初始化相关的命令属性。例如,

array('email'=>array(   'class'=>'path.to.Mailer',   'interval'=>3600,),'log'=>'path/to/LoggerCommand.php',
)

commandPath 属性 public string getCommandPath()
public void setCommandPath(string $value)

包含命令类的目录。默认是‘protected/commands’。

commandRunner 属性 只读 public CConsoleCommandRunner getCommandRunner()

返回命令执行对象。

方法详细

createCommandRunner() 方法
protected CConsoleCommandRunner createCommandRunner()
{return}CConsoleCommandRunner命令执行对象
源码: framework/console/CConsoleApplication.php#98 (显示) protectedfunctioncreateCommandRunner()
{
returnnewCConsoleCommandRunner;
}

创建命令执行对象实例。

displayError() 方法
public void displayError(integer $code, string $message, string $file, string $line)
$codeinteger错误代码
$messagestring错误信息
$filestring错误文件
$linestring错误的行
源码: framework/console/CConsoleApplication.php#112 (显示) publicfunctiondisplayError($code,$message,$file,$line)
{
echo"PHPError[$code]:$messagen";
echo"infile$fileatline$linen";
$trace=debug_backtrace();
//skipthefirst4stacksastheydonottelltheerrorposition
if(count($trace)>4)
$trace=array_slice($trace,4);
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";
}
}

显示捕捉到的 PHP 错误。 当没有处于活动的错误处理类的时候, 这个方法会在终端模式下显示错误。

displayException() 方法
public void displayException(Exception $exception)
$exceptionException没有捕捉的异常
源码: framework/console/CConsoleApplication.php#141 (显示) publicfunctiondisplayException($exception)
{
echo$exception;
}

显示没有捕获到的异常。 当没有处于活动的错误处理类的时候, 这个方法会在终端模式下显示错误。

getCommandPath() 方法
public string getCommandPath()
{return}string包含命令类的目录。默认是‘protected/commands’。
源码: framework/console/CConsoleApplication.php#149 (显示) publicfunctiongetCommandPath()
{
$applicationCommandPath=$this->getBasePath().DIRECTORY_SEPARATOR.'commands';
if($this->_commandPath===null&&file_exists($applicationCommandPath))
$this->setCommandPath($applicationCommandPath);
return$this->_commandPath;
}
getCommandRunner() 方法
public CConsoleCommandRunner getCommandRunner()
{return}CConsoleCommandRunner命令执行对象。
源码: framework/console/CConsoleApplication.php#172 (显示) publicfunctiongetCommandRunner()
{
return$this->_runner;
}

返回命令执行对象。

init() 方法
protected void init()
源码: framework/console/CConsoleApplication.php#75 (显示) protectedfunctioninit()
{
parent::init();
if(!isset($_SERVER['argv']))//||strncasecmp(php_sapi_name(),'cli',3))
die('Thisscriptmustberunfromthecommandline.');
$this->_runner=$this->createCommandRunner();
$this->_runner->commands=$this->commandMap;
$this->_runner->addCommands($this->getCommandPath());
}

通过创建命令执行对象初始化这个应用。

processRequest() 方法
public void processRequest()
源码: framework/console/CConsoleApplication.php#89 (显示) publicfunctionprocessRequest()
{
$this->_runner->run($_SERVER['argv']);
}

处理用户请求。 这个方法创建一个终端命令执行对象来处理一般的用户命令。

setCommandPath() 方法
public void setCommandPath(string $value)
$valuestring包含命令类的目录。
源码: framework/console/CConsoleApplication.php#161 (显示) publicfunctionsetCommandPath($value)
{
if(($this->_commandPath=realpath($value))===false||!is_dir($this->_commandPath))
thrownewCException(Yii::t('yii','Thecommandpath"{path}"isnotavaliddirectory.',
array('{path}'=>$value)));
}