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

文档还不是很完整。所以这是一个例子:

  1. 您将参数作为属性添加到控制器:
class CustomerController extends Controller {
    public $param1;
    public $param2;
    ...
  1. 您将 options 方法添加到控制器:
    public function options($actionID) {
        return array_merge(parent::options($actionID), ['param1', 'param2']);
    }

$actionID 必须指定,parent::options($actionID) 用于包含任何现有选项。

  1. 您现在可以使用 $this->param1$this->param2 访问操作中的参数,例如:
    public function actionSomething() {
        doAnything($this->param1, $this->param2);
    }

可以组合非命名参数和命名参数。命名的只需要最后指定即可。

文档中还缺少一个事实,如果您指定一个没有值的参数(例如 --param1 而不是 --param1=500),$this->param1 的值将是布尔值 true。如果根本未指定,则该值将为 NULL.