此外/无障碍/控制台命令/可定制的命令选项

可配置命令选项

最初,执行控制台命令的选项是在命令类的'run'方法中设置的。 它们对应于方法参数的顺序。

HLEB2框架中,您还可以为命令指定一个或多个命名参数。 调用命令时的命名参数顺序无关紧要。


#rules()方法

命令类的rules()方法返回一个包含扩展参数规则的数组。 如果此方法不存在,请将其添加为命令类的第一个方法。

#[\Override]
protected function 
rules(): array
{
    return [
        
Arg(name'Name')->short(name'N')->default('Undefined')->required(),
        
Arg(name'force'),
        
Arg(name'UserData')->list()->default([]),
    ];
}

示例中显示了三种不同类型的命名参数。 参数名称是必需的,不能重复。

第一个参数支持两个值-N--Name,其存在是必需的。 默认情况下,--Name等于字符串'Undefined',传入的值只能是字符串(不是数组)。 值可以是--Name=Fedor-N=Mark的形式,而--Name将等于'Undefined'

第二个参数的形式是--force(无值);如果存在,它等于true

第三个参数的形式是数组,值可以多次指定,如--UserData=1--UserData=2,等同于--UserData=[1,2]。其存在是可选的,如果没有值或调用为--UserData,它将等于[](空数组)。


#获取参数值

可以在命令的run()方法中以$this->getOptions()$this->getOption()获取参数数据。 第一种方法返回一个命名系统对象数组,可以从中获得所需格式的值。 另一种方法返回一个类似的单参数系统对象通过名称(主要必要,不是缩写)。

$name $this->getOption('Name')->asString();

$force $this->getOption('force')->asBool();

$options $this->getOption('UserData')->asArray();
页面翻译:chatgpt 4-o
返回顶部