Yii2: что такое консольный контроллер и как с ним работать?

Yii2 - это фреймворк для разработки веб-приложений на языке PHP. Консольный контроллер в Yii2 является специальным классом, предназначенным для обработки команд веб-приложения из командной строки. Консольные контроллеры используются для автоматизации различных задач, таких как миграции базы данных, запуск заданий cron, импорт/экспорт данных и т.д.

Для работы с консольными контроллерами в Yii2, сначала необходимо создать сам контроллер. Для этого можно использовать генератор кода Yii2, который автоматически создаст каркас контроллера с необходимыми методами. Команда для генерации контроллера выглядит примерно так:

php yii gii/controller --controllerClass=namespacepathtoYourController

Здесь namespacepathtoYourController - путь к классу контроллера.

После создания контроллера, вам нужно добавить в него несколько методов, которые будут обрабатывать команды. Каждый метод должен иметь префикс "action", за которым следует имя команды. Например, если вы хотите создать команду "hello", вы должны добавить метод actionHello() в ваш контроллер.

namespace appcommands;

use yiiconsoleController;

class YourController extends Controller
{
    public function actionHello()
    {
        echo "Hello, World!";
    }
}

Теперь, чтобы запустить команду "hello" из командной строки, вы должны выполнить следующую команду:

php yii your-controller/hello

Yii2 автоматически разберет команду и выполнит соответствующий метод actionHello() в вашем контроллере. Результат (в данном случае "Hello, World!") будет выведен в командную строку.

Кроме того, консольные контроллеры в Yii2 позволяют использовать аргументы и опции команды. Аргументы передаются после имени команды, а опции - в виде --название=значение. Например:

namespace appcommands;

use yiiconsoleController;

class YourController extends Controller
{
    public function actionHello($name, $uppercase = false)
    {
        $message = "Hello, $name!";
        if ($uppercase) {
            $message = strtoupper($message);
        }
        echo $message;
    }
}

Теперь вы можете вызвать команду с аргументами и опциями:

php yii your-controller/hello John --uppercase

Результат будет "HELLO, JOHN!".

Контроллеры также могут иметь другие методы, помимо action. Например, вы можете создать метод beforeAction(), который будет выполняться перед каждым действием. Это позволяет вам выполнять проверки или настройки перед выполнением команды.

Консольный контроллер - это мощный инструмент в Yii2, который позволяет вам автоматизировать различные задачи и упрощает разработку веб-приложений.