Данная статья документации актуальна только для версии 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.
Laravel по-русски