Yii2:如何在控制台命令中使用命名参数?
Yii2: How do you use named parameters in console commands?
如何编写控制台命令 yii controller/action --param1=something --param2=anything
并在操作中检索那些命名参数?
我发现文档确实说明了如何操作,但并没有像我预期的那样将其称为 "named parameters",而是称为选项:http://www.yiiframework.com/doc-2.0/guide-tutorial-console.html#create-command
文档还不是很完整。所以这是一个例子:
- 您将参数作为属性添加到控制器:
class CustomerController extends Controller {
public $param1;
public $param2;
...
- 您将
options
方法添加到控制器:
public function options($actionID) {
return array_merge(parent::options($actionID), ['param1', 'param2']);
}
$actionID
必须指定,parent::options($actionID)
用于包含任何现有选项。
- 您现在可以使用
$this->param1
和 $this->param2
访问操作中的参数,例如:
public function actionSomething() {
doAnything($this->param1, $this->param2);
}
可以组合非命名参数和命名参数。命名的只需要最后指定即可。
文档中还缺少一个事实,如果您指定一个没有值的参数(例如 --param1
而不是 --param1=500
),$this->param1
的值将是布尔值 true
。如果根本未指定,则该值将为 NULL
.
如何编写控制台命令 yii controller/action --param1=something --param2=anything
并在操作中检索那些命名参数?
我发现文档确实说明了如何操作,但并没有像我预期的那样将其称为 "named parameters",而是称为选项:http://www.yiiframework.com/doc-2.0/guide-tutorial-console.html#create-command
文档还不是很完整。所以这是一个例子:
- 您将参数作为属性添加到控制器:
class CustomerController extends Controller {
public $param1;
public $param2;
...
- 您将
options
方法添加到控制器:
public function options($actionID) {
return array_merge(parent::options($actionID), ['param1', 'param2']);
}
$actionID
必须指定,parent::options($actionID)
用于包含任何现有选项。
- 您现在可以使用
$this->param1
和$this->param2
访问操作中的参数,例如:
public function actionSomething() {
doAnything($this->param1, $this->param2);
}
可以组合非命名参数和命名参数。命名的只需要最后指定即可。
文档中还缺少一个事实,如果您指定一个没有值的参数(例如 --param1
而不是 --param1=500
),$this->param1
的值将是布尔值 true
。如果根本未指定,则该值将为 NULL
.