控制台命令Action
一个控制台命令action就是一个控制台命令类的一个方法。
方法名的格式: actionXyz
,action名的首字母大写,xyz才是被调用的action本身。
执行一个action的命令格式:
1 | yiic --option1=value1 --option2=value2 ... |
后面的option-value对将会赋给这个action方法的参数。如果你给出了option名而没有给出对应的值,那么这个option将会被认为是boolean值true。
action的参数也可以声明一个数组类型,如:
1 | public function actionIndex( array $types ) { ... } |
调用它的命令是:
1 | yiic sitemap index --types=News --types=Article |
最终命令调用是: actionIndex(array('News', 'Article'))。
从1.1.6开始,还支持匿名参数和全局选项。
匿名参数 指的是不按正常选项参数格式(the format of options)的命令行参数,比如: yiic sitemap index --limit=5 News
,News就是一个匿名参数。
要使用匿名参数,action必须声明一个 $args变量,比如:
1 | public function actionIndex( $limit =10, $args = array ()) {...} |
$ args
会接收到所有可用的匿名参数。
全局选项 (Global options)指的是一个命令行选项被这个命令的所有action所共享。
比如:一个命令有好几个action,我们想在每个action里面都有一个名字叫verbose
的选项,我们可以在每个action方法里面都声明一个叫 $verbose
的参数。
一个更好的做法是把它声明成这个命令类的公共成员变量( public member variable ),这样 verbose
就会成为一个全局的选项。
1 | class SitemapCommand extends CConsoleCommand |
2 | { |
3 |
public $verbose =false; |
4 |
public function actionIndex( $type ) {...} |
5 | } |
这样就可以执行一个带 verbose
选项的命令:
1 | yiic sitemap index --verbose=1 --type=News |