Yii2:如何在控制台命令中使用命名参数?

时间:2016-08-07 09:22:29

标签: php console yii2 named-parameters

如何编写控制台命令yii controller/action --param1=something --param2=anything并在操作中检索这些命名参数?

1 个答案:

答案 0 :(得分:0)

我发现文档确实说明了如何,而不是称之为"命名参数"正如我所料,它被称为选项:http://www.yiiframework.com/doc-2.0/guide-tutorial-console.html#create-command

虽然文档并不完整。所以这是一个例子:

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

      $actionIDparent::options($actionID)用于包含任何现有选项。

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

        将非命名和命名参数组合起来是可以的。指定的那些只需要最后指定。

        如果您指定的参数没有值(例如。--param1而不是--param1=500),那么文档中也缺少这样的事实,$this->param1的值将是布尔值{{1 }}。如果未指定,则值为true