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

