@bart
В Yii2 создание консольных команд осуществляется с помощью создания класса, наследующего от yiiconsoleController. Вы можете создать класс в папке console/controllers вашего приложения.
Ниже приведен пример создания консольной команды:
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php namespace consolecontrollers; use yiiconsoleController; class MyCommandController extends Controller { public function actionIndex() { echo "Hello, world!"; } } |
Затем вы можете выполнить команду через консоль, используя команду ./yii my-command/index.
Вы также можете добавлять параметры и опции для вашей команды, чтобы она была более функциональной. Для этого вы можете использовать методы actionOption или actionArgument в вашем классе.
@bart
Вот пример с параметрами и опциями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php
namespace consolecontrollers;
use yiiconsoleController;
class MyCommandController extends Controller
{
public function options($actionID)
{
return ['param1', 'param2']; // Опции
}
public function optionAliases()
{
return ['p1' => 'param1', 'p2' => 'param2']; // Псевдонимы для опций
}
public function optionDescriptions()
{
return [
'param1' => 'Description for param1',
'param2' => 'Description for param2',
]; // Описания опций
}
public function optionRules()
{
return [
[['param1', 'param2'], 'string'], // Правила опций
];
}
public function actionIndex($arg1, $arg2)
{
echo "Arguments: $arg1, $arg2" . PHP_EOL;
echo "Options: " . json_encode($this->options) . PHP_EOL;
}
}
|
Теперь вы можете вызвать команду через консоль с параметрами и опциями:
1
|
./yii my-command/index arg1value arg2value --param1=value1 --param2=value2 |
Где my-command - имя вашей команды, index - имя действия в вашем классе, arg1value и arg2value - значения аргументов, --param1=value1 и --param2=value2 - значения опций.