Может войдёшь?
Черновики Написать статью Профиль

Создание команд Artisan

перевод документация 5.х

  1. 1. Введение
  2. 2. Создание команды
    1. 2.1. Создание класса
    2. 2.2. Написание команды
    3. 2.3. Параметры и ключи
    4. 2.4. Чтение ввода
    5. 2.5. Вывод
    6. 2.6. Запрос ввода
    7. 2.7. Вызов других команд
  3. 3. Регистрация команд
Этот перевод актуален для англоязычной документации на (ветка 5.0). Опечатка? Выдели и нажми Ctrl+Enter.

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

PHP
[$name$mode$description$defaultValue]

Параметр PHPmode может быть объектом PHPInputArgument::REQUIRED или PHPInputArgument::OPTIONAL.

При определении PHPoptions, массив выглядит так:

PHP
[$name$shortcut$mode$description$defaultValue]

Параметр PHPmode для ключей может быть любым из этих объектов: PHPInputOption::VALUE_REQUIRED, PHPInputOption::VALUE_OPTIONAL, PHPInputOption::VALUE_IS_ARRAY, PHPInputOption::VALUE_NONE.

Режим PHPVALUE_IS_ARRAY указывает, что ключ может быть использован несколько раз при вызове команды:

PHP
InputOption::VALUE_REQUIRED InputOption::VALUE_IS_ARRAY

Что позволит выполнить такую команду:

shphp artisan foo --option=bar --option=baz

Режим PHPVALUE_NONE указывает, что ключ является простым переключателем:

shphp artisan foo --option

Чтение ввода

Во время выполнения команды вам, конечно, потребуется доступ к параметрам и ключам, которые были переданы ей на вход. Для этого вы можете использовать методы PHPargument() и PHPoption().

Чтение параметра команды

PHP
$value $this->argument('name');

Чтение всех параметров

PHP
$arguments $this->argument();

Чтение ключа команды

PHP
$value $this->option('name');

Чтение всех ключей

PHP
$options $this->option();

Вывод

Для вывода сообщений вы можете использовать методы PHPinfo(), PHPcomment(), PHPquestion() и PHPerror(). Каждый из них будет использовать подходящие по смыслу цвета ANSI для отображении текста.

Вывод сообщения в консоль

PHP
$this->info('Вывести это на экран');

Вывод сообщения об ошибке

PHP
$this->error('Что-то пошло не так!');

Запрос ввода

Вы можете также использовать методы PHPask() и PHPconfirm() для получение ввода от пользователя.

Запрос ввода от пользователя

PHP
$name $this->ask('Как вас зовут?');

Запрос скрытого ввода

PHP
$password $this->secret('Какой у вас пароль?');

Запрос подтверждения

PHP
if ($this->confirm('Вы хотите продолжить? [да|нет]'))
{
  
//
}

Вы можете также передать значение по умолчанию в метод PHPconfirm(), которое должно быть либо true, либо false:

PHP
$this->confirm($questiontrue);

Вызов других команд

Иногда необходимо вызвать другую команду из своей. Для этого используйте метод PHPcall:

PHP
$this->call('command:name', ['argument' => 'foo''--option' => 'bar']);

Регистрация команд

Регистрация команды Artisan
Как только ваша команда написана, вам нужно зарегистрировать её в Artisan, чтобы она стала доступна для использования. Это обычно делается в файле app/Console/Kernel.php. В нём вы найдёте список команд в свойстве confcommands. Чтобы зарегистрировать свою команду, просто добавьте её в этот список:

PHP
protected $commands = [
    
'App\Console\Commands\FooCommand'
];

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

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.