Данная статья документации актуальна только для версии 5.0 и была удалена в версии 5.1. Описание процесса создания команд перенесено в статью Консоль Artisan.
Введение
В дополнение к стандартным командам Artisan вы можете также создавать свои собственные команды для работы с приложением. Вы можете поместить их в папку app/Console/Commands, либо в любое другое место, в котором их сможет найти автозагрузчик в соответствии с вашим файлом composer.json.
Создание команды
Создание класса
Для создания новой команды можно использовать Artisan-команду shmake:console
, которая создаст заглушку, с которой вы можете начать работать.
Генерация нового класса команды
shphp artisan make:console FooCommand
Эта команда создаст класс в app/Console/Commands/FooCommand.php.
При создании команды может быть использован параметр sh--command
для назначения имени команды в терминале:
shphp artisan make:console AssignUsers --command=users:assign
Написание команды
Когда вы сгенерировали класс команды, вам нужно заполнить его свойства name и description, которые используются при отображении вашей команды в списке команд (shartisan list
).
Метод PHPfire
будет вызван при вызове вашей команды. В него вы можете поместить любую нужную логику.
Параметры и ключи
Методы PHPgetArguments()
и PHPgetOptions()
служат для определения параметров и ключей, которые ваша команда принимает на вход. Оба эти метода могут возвращать массив команд, которые описываются как массив ключей.
При определении PHParguments
массив имеет такой вид:
[$name, $mode, $description, $defaultValue]
Параметр PHPmode
может быть объектом PHPInputArgument::REQUIRED
или PHPInputArgument::OPTIONAL
.
При определении PHPoptions
, массив выглядит так:
[$name, $shortcut, $mode, $description, $defaultValue]
Параметр PHPmode
для ключей может быть любым из этих объектов: PHPInputOption::VALUE_REQUIRED
, PHPInputOption::VALUE_OPTIONAL
, PHPInputOption::VALUE_IS_ARRAY
, PHPInputOption::VALUE_NONE
.
Режим PHPVALUE_IS_ARRAY
указывает, что ключ может быть использован несколько раз при вызове команды:
InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY
Что позволит выполнить такую команду:
shphp artisan foo --option=bar --option=baz
Режим PHPVALUE_NONE
указывает, что ключ является простым переключателем:
shphp artisan foo --option
Чтение ввода
Во время выполнения команды вам, конечно, потребуется доступ к параметрам и ключам, которые были переданы ей на вход. Для этого вы можете использовать методы PHPargument()
и PHPoption()
.
$value = $this->argument('name');
$arguments = $this->argument();
$value = $this->option('name');
$options = $this->option();
Вывод
Для вывода сообщений вы можете использовать методы PHPinfo()
, PHPcomment()
, PHPquestion()
и PHPerror()
. Каждый из них будет использовать подходящие по смыслу цвета ANSI для отображении текста.
$this->info('Вывести это на экран');
$this->error('Что-то пошло не так!');
Запрос ввода
Вы можете также использовать методы PHPask()
и PHPconfirm()
для получение ввода от пользователя.
$name = $this->ask('Как вас зовут?');
$password = $this->secret('Какой у вас пароль?');
if ($this->confirm('Вы хотите продолжить? [да|нет]'))
{
//
}
Вы можете также передать значение по умолчанию в метод PHPconfirm()
, которое должно быть либо true, либо false:
$this->confirm($question, true);
Вызов других команд
Иногда необходимо вызвать другую команду из своей. Для этого используйте метод PHPcall
:
$this->call('command:name', ['argument' => 'foo', '--option' => 'bar']);
Регистрация команд
Регистрация команды Artisan
Как только ваша команда написана, вам нужно зарегистрировать её в Artisan, чтобы она стала доступна для использования. Это обычно делается в файле app/Console/Kernel.php. В нём вы найдёте список команд в свойстве confcommands
. Чтобы зарегистрировать свою команду, просто добавьте её в этот список:
protected $commands = [
'App\Console\Commands\FooCommand'
];
Когда Artisan загружается, все перечисленные в этом свойстве команды будут включены в сервис-контейнер и зарегистрированы в Artisan.