Class yii\console\Controller

继承yii\console\Controller » yii\base\Controller » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\base\ViewContextInterface
子类yii\console\controllers\AssetController, yii\console\controllers\BaseMigrateController, yii\console\controllers\CacheController, yii\console\controllers\FixtureController, yii\console\controllers\HelpController, yii\console\controllers\MessageController, yii\console\controllers\MigrateController, yii\console\controllers\ServeController
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/console/Controller.php

Controller 是控制台命令类的基类.

控制台控制器由一个多几个称为子命令的动作组成. 用户通过指定标识控制器动作的相关路由来调用控制台命令. 调用控制台命令时, 将使用 yii 程序, 如下所示:

yii <route> [--param1=value1 --param2 ...]

其中的<route>是到控制器动作的路径, 并且参数将作为命令的属性填充. 有关详细信息, 请参阅 options().

公共属性

隐藏继承的属性

属性类型描述定义在
$action yii\base\Action|null 当前正在执行的动作. yii\base\Controller
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$color boolean|null 是否在输出中启用 ANSI 颜色. yii\console\Controller
$defaultAction string 在请求中未指定动作ID时使用的动作ID. yii\base\Controller
$help boolean 是否显示有关当前命令的帮助信息. yii\console\Controller
$helpSummary string 该属性是只读的. yii\console\Controller
$id string 该控制器的ID. yii\base\Controller
$interactive boolean 是否以交互方式运行命令. yii\console\Controller
$layout null|string|false 要应用于此控制器的视图的布局的名称. yii\base\Controller
$module yii\base\Module 该控制器所属的模块. yii\base\Controller
$modules yii\base\Module[] 该控制器所在的所有祖先模块. 该属性是只读的. yii\base\Controller
$passedOptionValues array 与传递的选项相对应的属性. 该属性是只读的. yii\console\Controller
$passedOptions array 执行期间传递的选项名称. 该属性是只读的. yii\console\Controller
$request yii\console\Request yii\console\Controller
$response yii\console\Response yii\console\Controller
$route string 当前请求的路由(模块ID, 控制器ID和动作ID). 该属性是只读的. yii\base\Controller
$silentExitOnException boolean|null 如果为true, 脚本在出现异常的情况下以ExitCode::OK结尾; 如果为false, ExitCode::UNSPECIFIED_ERROR. yii\console\Controller
$uniqueId string 以模块ID(如果有)为前缀的控制器ID. 该属性是只读的. yii\base\Controller
$view yii\base\View|yii\web\View 可用于渲染视图或视图文件的视图对象. yii\base\Controller
$viewPath string 包含此控制器的视图文件的目录. yii\base\Controller

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\Controller
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
actions() 为控制器声明外部动作. yii\base\Controller
afterAction() 执行动作后立即调用该方法. yii\base\Controller
ansiFormat() 使用 ANSI 代码格式化字符串. yii\console\Controller
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeAction() 在执行动作之前立即调用该方法. yii\console\Controller
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
bindActionParams() 将参数绑定到动作. yii\console\Controller
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
confirm() 要求用户输入yn进行确认. yii\console\Controller
createAction() 根据给定的动作ID创建一个动作. yii\base\Controller
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
findLayoutFile() 查找适用的布局文件. yii\base\Controller
getActionArgsHelp() 返回动作的匿名参数的帮助信息. yii\console\Controller
getActionHelp() 返回指定动作的详细帮助信息. yii\console\Controller
getActionHelpSummary() 返回描述指定动作的单行简单摘要. yii\console\Controller
getActionOptionsHelp() 返回动作选项的帮助信息. yii\console\Controller
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getHelp() 返回此控制器的帮助信息. yii\console\Controller
getHelpSummary() 返回描述此控制器的单行简单摘要. yii\console\Controller
getModules() 返回此控制器的所有祖先模块. yii\base\Controller
getOptionValues() 返回与动作id的选项相对应的属性. yii\console\Controller
getPassedOptionValues() 返回与传递的选项相对应的属性. yii\console\Controller
getPassedOptions() 返回执行期间传递的选项的名称. yii\console\Controller
getRoute() 返回当前请求的路由. yii\base\Controller
getUniqueId() 返回控制器的唯一ID. yii\base\Controller
getView() 返回可用于渲染视图或视图文件的视图对象. yii\base\Controller
getViewPath() 返回包含此控制器的视图文件的目录. yii\base\Controller
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\base\Controller
isColorEnabled() 返回一个值, 该值指示是否启用 ANSI 颜色. yii\console\Controller
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
optionAliases() 返回选项别名. yii\console\Controller
options() 返回动作的有效操作选项. yii\console\Controller
prompt() 提示用户输入并验证输入. yii\console\Controller
render() 渲染视图并应用布局(如果可用). yii\base\Controller
renderContent() 通过应用布局渲染静态字符串. yii\base\Controller
renderFile() 渲染视图文件. yii\base\Controller
renderPartial() 渲染视图而不使用布局. yii\base\Controller
run() 运行根据路由指定的请求. yii\base\Controller
runAction() 使用指定的动作id和参数运行一个动作. yii\console\Controller
select() 给用户一个选择的选项. yii\console\Controller
setView() 设置此控制器使用的视图对象. yii\base\Controller
setViewPath() 设置包含视图文件的目录. yii\base\Controller
stderr() 将字符串打印到 STDERR. yii\console\Controller
stdout() 将字符串打印到 STDOUT. yii\console\Controller
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
bindInjectedParams() 根据操作方法签名中的类型和名称填充参数. yii\base\Controller
getActionMethodReflection() yii\console\Controller
parseDocCommentDetail() 从文档块返回完整描述. yii\console\Controller
parseDocCommentSummary() 返回文档块的第一行. yii\console\Controller
parseDocCommentTags() 将注释块解析为标签. yii\console\Controller

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_ACTION yii\base\ActionEvent 执行控制器动作后立即触发的事件. yii\base\Controller
EVENT_BEFORE_ACTION yii\base\ActionEvent 在执行控制器动作之前触发的事件. yii\base\Controller

常量

隐藏继承的常量

常量描述定义在
EXIT_CODE_ERROR 1 Deprecated since 2.0.13. 改用 yii\console\ExitCode::UNSPECIFIED_ERROR. yii\console\Controller
EXIT_CODE_NORMAL 0 Deprecated since 2.0.13. 改用 yii\console\ExitCode::OK. yii\console\Controller

属性详情

$color public 属性

是否在输出中启用 ANSI 颜色. 如果未设置, 则仅对支持它的终端启用 ANSI 颜色.

public boolean|null $color null
$help public 属性 (可用自版本: 2.0.10)

是否显示有关当前命令的帮助信息.

public boolean $help false
$helpSummary public 属性

该属性是只读的.

public string $helpSummary null
$interactive public 属性

是否以交互方式运行命令.

public boolean $interactive true
$passedOptionValues public 属性

与传递的选项相对应的属性. 该属性是只读的.

public array $passedOptionValues null
$passedOptions public 属性

执行期间传递的选项名称. 该属性是只读的.

public array $passedOptions null
$request public 属性
$response public 属性
$silentExitOnException public 属性 (可用自版本: 2.0.36)

如果为true, 脚本在出现异常的情况下以ExitCode::OK结尾; 如果为false, ExitCode::UNSPECIFIED_ERROR. 默认为: YII_ENV_TEST

方法详情

ansiFormat() public 方法

使用 ANSI 代码格式化字符串.

你可以使用 yii\helpers\Console 中定义的常量来传递其它参数.

示例:

echo $this->ansiFormat('This will be red and underlined.', Console::FG_RED, Console::UNDERLINE);
public string ansiFormat ( $string )
$string string

要格式化的字符串.

beforeAction() public 方法

在执行动作之前立即调用该方法.

该方法将触发 EVENT_BEFORE_ACTION 事件. 该方法的返回值将决定动作是否应继续运行.

如果该动作不执行, 则应通过提供必要的输出或重定向请求, 在beforeAction代码内部处理该请求. 否则, 响应将为空.

如果重写该方法, 则代码应如下所示:

public function beforeAction($action)
{
    // 如果你希望代码在 [[EVENT_BEFORE_ACTION]] 事件触发的动作过滤器之前运行(eg. PageCache 或 AccessControl), 请在此处输入你的自定义代码.

    if (!parent::beforeAction($action)) {
        return false;
    }

    // 其他自定义代码

    return true; // 或者`false`表示不运行该动作
}
public boolean beforeAction ( $action )
$action yii\base\Action

要执行的动作.

return boolean

该动作是否应该继续运行.

bindActionParams() public 方法

将参数绑定到动作.

yii\base\Action 开始使用给定参数运行时, 将调用此方法. 此方法将首先使用可用于动作的 options 绑定参数. 然后, 它验证给定的参数.

public array bindActionParams ( $action, $params )
$action yii\base\Action

与参数绑定的动作.

$params array

绑定到动作的参数.

return array

动作可以运行的有效参数.

throws yii\console\Exception

如果存在未知选项或缺少参数.

confirm() public 方法

要求用户输入yn进行确认.

典型用户如下所示:

if ($this->confirm("Are you sure?")) {
    echo "user typed yes\n";
} else {
    echo "user typed no\n";
}
public boolean confirm ( $message, $default false )
$message string

在等待用户输入之前回显.

$default boolean

如果没有选择, 则返回该值.

return boolean

用户是否确认. 如果 $interactivefalse, 则返回true.

getActionArgsHelp() public 方法

返回动作的匿名参数的帮助信息.

返回的值应该是一个数组. 键是参数名称, 值是相应的帮助信息. 每个值必须是具有以下结构的数组:

  • required: boolean, 此参数是否是必须的.
  • type: string, 此参数的 PHP 类型.
  • default: string, 此参数的默认值.
  • comment: string, 此参数的注释.

默认实现将返回从与动作方法相对应的参数的文档注释中提取的帮助信息.

public array getActionArgsHelp ( $action )
$action yii\base\Action
return array

动作参数的帮助信息.

getActionHelp() public 方法

返回指定动作的详细帮助信息.

public string getActionHelp ( $action )
$action yii\base\Action

寻求帮助的动作.

return string

指定动作的详细帮助信息.

getActionHelpSummary() public 方法

返回描述指定动作的单行简单摘要.

public string getActionHelpSummary ( $action )
$action yii\base\Action

获取摘要的动作.

return string

描述指定动作的单行简单摘要.

getActionMethodReflection() protected 方法

protected ReflectionMethod getActionMethodReflection ( $action )
$action yii\base\Action
getActionOptionsHelp() public 方法

返回动作选项的帮助信息.

返回的值应该是一个数组. 键是选项名称, 值是相应的帮助信息. 每个值必须是具有以下结构的数组:

  • type: string, 此参数的 PHP 类型.
  • default: string, 此参数的默认值.
  • comment: string, 此参数的注释.

默认实现将返回从与动作选项相对应的属性的文本注释中提取的帮助信息.

public array getActionOptionsHelp ( $action )
$action yii\base\Action
return array

动作选项的帮助信息.

getHelp() public 方法

返回此控制器的帮助信息.

你可以重写此方法以返回自定义的帮助. 默认实现返回从 PHPDoc 注释中检索到的帮助信息.

public string getHelp ( )
getHelpSummary() public 方法

返回描述此控制器的单行简单摘要.

你可以重写此方法以返回自定义的摘要. 默认实现返回从 PHPDoc 注释中的第一行.

public string getHelpSummary ( )
getOptionValues() public 方法

返回与动作id的选项相对应的属性.

子类可以重写此方法以指定可能的属性.

public array getOptionValues ( $actionID )
$actionID string

当前请求的动作id.

return array

与操作选项相对应的属性.

getPassedOptionValues() public 方法

返回与传递的选项相对应的属性.

public array getPassedOptionValues ( )
return array

与传递的选项相对应的属性.

getPassedOptions() public 方法

返回执行期间传递的选项的名称.

public array getPassedOptions ( )
return array

执行期间传递的选项的名称.

isColorEnabled() public 方法

返回一个值, 该值指示是否启用 ANSI 颜色.

仅当 $color 设置为true或未设置且终端支持 ANSI 颜色时, 才启用 ANSI 颜色.

public boolean isColorEnabled ( $stream = \STDOUT )
$stream resource

要检查的流.

return boolean

是否在输出中启用 ANSI 样式.

optionAliases() public 方法 (可用自版本: 2.0.8)

返回选项别名.

子类可以重写此方法以指定别名选项.

参见 options().

public array optionAliases ( )
return array

对动作有效的选项别名. 其中键是选项的别名, 值是选项的名称.

options() public 方法

返回动作的有效操作选项.

一个选项需要存在一个公共成员变量, 其名称为选项名称. 子类可以重写此方法以指定可能的选项.

Note: 只有在调用 beforeAction() 之后, 才能通过选项设置值.

public string[] options ( $actionID )
$actionID string

当前请求的动作id

return string[]

动作的有效操作选项.

parseDocCommentDetail() protected 方法

从文档块返回完整描述.

protected string parseDocCommentDetail ( $reflection )
$reflection Reflector
parseDocCommentSummary() protected 方法

返回文档块的第一行.

protected string parseDocCommentSummary ( $reflection )
$reflection Reflector
parseDocCommentTags() protected 方法

将注释块解析为标签.

protected array parseDocCommentTags ( $reflection )
$reflection Reflector

注释块.

return array

解析的标签.

prompt() public 方法

提示用户输入并验证输入.

public string prompt ( $text, $options = [] )
$text string

提示字符串.

$options array

验证输入的选项:

  • required: 是否是必须的.
  • default: 如果用户未键入任何输入, 则为默认值.
  • pattern: 正则表达式模式以验证用户输入.
  • validator: 用户验证输入的可调用函数. 该函数必须接收两个参数:
    • $input: 进行验证的用户输入.
    • $error: 如果验证失败, 则引用传递的错误值.

如何将提示方法与验证函数一起使用的示例:

$code = $this->prompt('Enter 4-Chars-Pin', ['required' => true, 'validator' => function($input, &$error) {
    if (strlen($input) !== 4) {
        $error = 'The Pin must be exactly 4 chars!';
        return false;
    }
    return true;
}]);
return string

用户输入.

runAction() public 方法

使用指定的动作id和参数运行一个动作.

如果操作id为空, 则该方法将使用 $defaultAction.

参见 createAction().

public integer runAction ( $id, $params = [] )
$id string

要执行的动作的id.

$params array

要传递给动作的参数(name-value 对).

return integer

动作执行的状态. 0表示正常, 其它值表示异常.

throws yii\base\InvalidRouteException

如果无法成功将请求的动作id解析为一个动作.

throws yii\console\Exception

如果存在未知选项或缺少参数.

select() public 方法

给用户一个选择的选项.

?作为输入, 将显示可供选择的选项列表及其说明.

public string select ( $prompt, $options = [] )
$prompt string

提示信息.

$options array

可供选择的键值选项数组.

return string

用户选择的选项字符.

stderr() public 方法

将字符串打印到 STDERR.

你可以选择使用 ANSI 代码格式化字符串, 方法是使用 yii\helpers\Console 中定义的常量传递其它参数.

示例:

$this->stderr('This will be red and underlined.', Console::FG_RED, Console::UNDERLINE);
public integer|boolean stderr ( $string )
$string string

要打印的字符串.

return integer|boolean

打印的字节数, 或错误时为false.

stdout() public 方法

将字符串打印到 STDOUT.

你可以选择使用 ANSI 代码格式化字符串, 方法是使用 yii\helpers\Console 中定义的常量传递其它参数.

示例:

$this->stdout('This will be red and underlined.', Console::FG_RED, Console::UNDERLINE);
public integer|boolean stdout ( $string )
$string string

要打印的字符串.

return integer|boolean

打印的字节数, 或错误时为false.