Как создать консольную команду в yii2?

Пользователь

от bart , в категории: PHP , 2 года назад

Как создать консольную команду в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от nicolette.stoltenberg , 2 года назад

@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 в вашем классе.

Пользователь

от francis_schuster , год назад

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