Yii2: справочник по консольным командам

Я часто в своих проектах создаю контролеры, в которых создаю методы для выполнения задач. Иногда бывает, что таких методов много (4-5 шт), но даже если и не много, то со временем забываю что делает та или иная команда.

Есть ли в самом фреймворке метод, который сможет показать все доступные команды? Или может как то создать автоматически справочник?

Например, у меня в папке console\controllers есть контроллер RbacController.php, который наследуется от yii\console\Controller

<?php
namespace console\controllers;

use Yii;
use yii\console\Controller;
use yii\helpers\ArrayHelper;
use common\models\User;

class RbacController extends Controller
{
    public function actionInit()
    {
        $auth = Yii::$app->authManager;
        // добавляем роль "admin"
        $admin = $auth->createRole('admin');
        $auth->add($admin);
    }

    public function actionAddRole()
    {
        $auth = Yii::$app->authManager;
        $roleName = $this->prompt('Роль:', ['required' => true]);
        $admin = $auth->createRole($roleName);
        $auth->add($admin);
    }

    public function actionCreateUser()
    {
        $email = $this->prompt('Email:', ['required' => true]);
        $username = $this->prompt('Username:', ['required' => true]);
        $password = $this->prompt('Password:', ['required' => true]);

        $user = new User();
        $user->username = $username;
        $user->email = $email;
        $user->setPassword($password);
        $user->generateAuthKey();
        $user->generateEmailVerificationToken();
        $user->status = 10;
        if ($user->save()) {
            echo "Success\n";
        } else {
            echo "Error\n";
        }
    }
}

Если возможность ввести команду, например, php yii rbac и она покажет все методы? Что то на подобие php yii. Или только руками такое можно сделать?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Всё просто. Надо для класса и методов добавить PhpDoc

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

php yii help rbac

В секции DESCRIPTION выведется информация о самом классе, а в секции SUB-COMMANDS все данные по каждому методу.

Пример:

/**
 * This command echoes the first argument that you have entered.
 *
 * This command is provided as an example for you to learn how to create console commands.
 */
class TestController extends Controller {
    
    /**
     * This command echoes what you have entered as the message.
     * @param string $message the message to be echoed.
     * 
     * @return int Exit code
     */
    public function actionIndex($message = 'Test Console Controller') {
        echo $message . "\n";

        return ExitCode::OK;
    }
    
    /**
     * Some description for Yo method
     * 
     * @param string $message the message to be echoed.
     *
     * @return string Result of method
     */
    public function actionYo($message = 'Yo method message') {
        return $message;
    }
}

При команде php yii help test выведет:

DESCRIPTION

This command echoes the first argument that you have entered.

This command is provided as an example for you to learn how to create console commands.


SUB-COMMANDS

- test/index (default)  This command echoes what you have entered as the message.
- test/yo               Some description for Yo method

введите сюда описание изображения


Если не писать PhpDoc, то список методов вы получите в любом случае


Если вместо например описания класса нужно добавить другое зачем-то (в наследнике например), то можно переопределить метод getHelp

public function getHelp() {
    return 'yo1231231231123';
}

Тогда в секции DESCRIPTION выведется информация из метода getHelp

введите сюда описание изображения

→ Ссылка