@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
- значения опций.