Дополнительно/Специальные возможности/Консольные команды/Настраиваемые параметры команд

Настраиваемые параметры команд

Изначально параметры для выполнения консольных команд задаются в методе '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 будет равен [] (пустому массиву).


#Получение значений параметров

Данные параметров можно получить как $this->getOptions() или $this->getOption() в методе run() команды. Первый способ возвращает именованный массив системных объектов, из каждого можно получить значение в нужном формате. Другой возвращает аналогичный системный объект одного параметра по названию (обязательному основному, не сокращённому).

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

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

$options $this->getOption('UserData')->asArray();
Страница создана: @fomiash
К началу страницы