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

Команды Artisan

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

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

Введение

В дополнение к стандартным командам Artisan вы можете также добавлять свои собственные команды для работы с приложением. Вы можете поместить их в папку app/commands, либо в любое другое место, в котором их сможет найти автозагрузчик в соответствии с вашим файлом composer.json.

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

Создание класса

Для создания новой команды можно использовать команду command:make, которая создаст заглушку, с которой вы можете начать работать.

Генерация нового класса команды

shphp artisan command:make FooCommand

По умолчанию сгенерированные команды помещаются в папку app/commands, однако вы можете указать произвольное расположение или пространство имён:

shphp artisan command:make FooCommand --path=app/classes --namespace=Classes
+ 4.1

добавлено в 4.1 ()

При создании команды может быть использован параметр sh--command для назначения имени команды в терминале:
%%(sh)
php artisan command:make AssignUsers --command=users:assign
%%

Написание команды

Когда вы сгенерировали класс команды, вам нужно заполнить его свойства PHP$name и PHP$description, которые используются при отображении вашей команды в списке команд (artisan list).

Метод fire будет вызван при вызове вашей команды. В него вы можете поместить любую нужную логику.

Параметры и ключи

Методы PHPgetArguments() и PHPgetOptions() служат для определения параметров и ключей, которые ваша команда принимает на вход. Оба эти метода могут возвращать массив команд, которые описываются как массив ключей.

При определении PHP$arguments массив имеет такую форму:

PHP
array($name$mode$description$defaultValue)

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

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

PHP
array($name$shortcut$mode$description$defaultValue)

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

Режим PHPVALUE_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);

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

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

Как только ваша команда написана вам нужно зарегистрировать её в Artisan, чтобы она стала доступна для использования. Это обычно делается в файле app/start/artisan.php. Внутри него вы можете использовать метод PHPArtisan::add() для регистрации команд:

PHP
Artisan::add(new CustomCommand);

Регистрация команды, находящейся в IoC

Если ваша команда зарегистрирована внутри контейнера IoC, то вы можете использовать метод PHPArtisan::resolve(), чтобы сделать её доступной для Artisan:

PHP
Artisan::resolve('binding.name');
+ 4.1

добавлено в 4.1 ()

Регистрация команд в поставщике услуг

Если вам необходимо зарегистрировать команды в поставщике услуг, вам надо вызвать метод PHPcommands из метода поставщика PHPboot, передав IoC-контейнер для привязки к команде:

PHP
public function boot()
{
  
$this->commands('command.binding');
}

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

Иногда вам потребуется вызвать другую команду изнутри вашей. Вы можете сделать это методом PHPcall().

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

В версии 4.0 использовалась точечная запись (command.name).

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

Разметка: ? ?

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