Skip to content

Commit

Permalink
commands.md updated to 5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
vladshcherbin committed Sep 17, 2014
1 parent 005874c commit a3d97e7
Showing 1 changed file with 51 additions and 61 deletions.
112 changes: 51 additions & 61 deletions commands.md
Original file line number Diff line number Diff line change
@@ -1,150 +1,140 @@
git c7c67b71b26b7f551c8f06c32040c57e7494961c
git 871adfd07e3cbc0d3d1b0881826da2c001382d19

---

# Разработка Artisan-команд

- [Введение](#introduction)
- [Создание Команды](#building-a-command)
- [Регистрация Команд](#registering-commands)
- [Вызов Других Команд](#calling-other-commands)
- [Создание команды](#building-a-command)
- [Регистрация команд](#registering-commands)
- [Вызов других команд](#calling-other-commands)

<a name="introduction"></a>
## Введение

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

<a name="building-a-command"></a>
## Создание Команды
## Создание команды

### Генерация Класса
### Генерация класса

Для создания новой команды, вы можете воспользоваться командой Artisana'а `command:make`, которая сгенерирует макет класса:
Для создания новой команды, вы можете воспользоваться командой Artisan-а `make:console`, которая сгенерирует макет класса:

#### Сгенерируйте новый класс команды

php artisan command:make FooCommand
php artisan make:console FooCommand

По умолчанию Ваши команды будут помещены в директорию `app/commands`; однако, Вы можете указать произвольный путь или пространство имен:
Команда выше сгенерирует класс `app/Console/FooCommand.php`.

php artisan command:make FooCommand --path=app/classes --namespace=Classes
Создавая команду, опция `--command` может быть использована для назначения имени команды в консоли:

Создавая команду, опция `--command` может быть использована для назначения имени команды:
php artisan make:console AssignUsers --command=users:assign

php artisan command:make AssignUsers --command=users:assign
### Написание команды

### Написание Команды
Как только ваша команда будет сгенерирована, необходимо заполнить свойства класса `name` и `description`, которые будут использованы при отображении команды в списке.

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

Метож `fire` будет вызван как только ваша команда будет запущена. Вы можете поместить в этот метод любую логику.
### Аргументы и опции

### Аргументы И Опции
В методах `getArguments` и `getOptions` вы можете определить любые аргументы или опции, которые будет принимать команда. Оба этих метода возвращают массив команд, описываемых списком полей массива.

В методах `getArguments` и `getOptions` вы можете определить произвольные аргументы или опции, которые будет принимать Ваша команда. Оба этих метода возвращают массив команд, описываемых списокм полей массива.
Массив, определяющий `аргументы`, выглядит так:

Массив, определяющий `аргумент`, выглядит так:
array($name, $mode, $description, $defaultValue)

array($name, $mode, $description, $defaultValue)
Аргумент `mode` может принимать одно из следующих значений: `InputArgument::REQUIRED` (обязательный) или `InputArgument::OPTIONAL` (необязательный).

Аргумент `mode` может принимать одно из следующих значений: `InputAgrument::REQUIRED` (обязтельный) или `InputArgument::OPTIONAL` (необязательный).
Массив, определяющий `опции`, выглядит следующим образом:

Массив, определяющий `опцию`, выглядит следующим образом:

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

Для опций, аргумент `mode` может быть: `InputOption::VALUE_REQUIRED` (значение обязательно), `InputOption::VALUE_OPTIONAL` (значение необязательно), `InputOption::VALUE_IS_ARRAY` (значение - это массив), `InputOption::VALUE_NONE` (нет значения).

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

php artisan foo --option=bar --option=baz
php artisan foo --option=bar --option=baz

Значение `VALUE_NONE` означает, что опция просто используется как "переключатель":

php artisan foo --option
php artisan foo --option

### Получение ввода

Во время исполнения команды, очевидно, потребуется получать значения переданных аргументов и опций. Для этого можно воспользоваться методами `argument` и `option`:
Во время выполнения команды, очевидно, потребуется получать значения переданных аргументов и опций. Для этого можно воспользоваться методами `argument` и `option`:

#### Получение значения аргумента команды

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

#### Получение всех аргументов

$arguments = $this->argument();
$arguments = $this->argument();

#### Получение значения опции команды

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

#### Получение всех опций

$options = $this->option();
$options = $this->option();

### Вывод команды

Для вывода данных в консоль Вы можете использовать методы `info` (информация), `comment` (комментарий), `question` (вопрос) и `error` (ошибка). Каждый из этих методов будет использовать цвет по стандарту ANSI, соответствующий смыслу метода.
Для вывода данных в консоль вы можете использовать методы `info` (информация), `comment` (комментарий), `question` (вопрос) и `error` (ошибка). Каждый из этих методов будет использовать цвет по стандарту ANSI, соответствующий смыслу метода.

#### Вывод информации в консоль

$this->info('Отобразить это на экране');
$this->info('Display this on the screen');

#### Вывод сообщений об ошибке в консоль

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

### Взаимодействие с пользователем

Вы также можете воспользоваться методами `ask` и `confirm` для обеспечения пользовательского ввода:

#### Попросить пользователя ввести данные:

$name = $this->ask('Как Вас зовут?');
$name = $this->ask('What is your name?');

#### Попросить пользователя ввести секретные данные:

$password = $this->secret('Какой пароль?');
$password = $this->secret('What is the password?');

#### Попросить пользователя подтвердить что-то:

if ($this->confirm('Вы желаете продолжить? [yes|no]'))
{
//
}
if ($this->confirm('Do you wish to continue? [yes|no]'))
{
//
}

Вы таежке можете указать ответ по умолчанию для метода `confirm`. Это должно быть `true` или `false`:
Вы также можете указать ответ по умолчанию для метода `confirm`. Это должно быть `true` или `false`:

$this->confirm($question, true);
$this->confirm($question, true);

<a name="registering-commands"></a>
## Регистрация Команд

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

Как только Вша команда будет готова, Вам нужно зарегистрировать ее в Artisan'е, чтобы воспользоваться ею. Обычно это делается в файле `app/start/artisan.php`. В этом файле вы можете вопользоваться методом `Artisan::add` для того, чтобы зарегистрировать команду:

Artisan::add(new CustomCommand);

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

Если Ваша команда зарегистрирована в [IoC контейнере](/docs/ioc) приложения, необходимо воспользоваться методом `Artisan::resolve`, чтобы команда стала доступной Artisan'у:
#### Регистрация команды Artisan

Artisan::resolve('binding.name');
Как только ваша команда будет готова, нужно зарегистрировать её в Artisan-е, чтобы она была доступна для использования. Обычно это делается в файле `app/Providers/ArtisanServiceProvider.php`. В этом файле вы можете зарегистрировать команды в [IoC контейнере](/docs/ioc) и воспользоваться методом `commands` для их регистрации в Artisan-е. По умолчанию, образец регистрации команды включен в сервис-провайдер. Например:

#### Регистрация команд внутри сервис-провайдеров (Service Provider)
$this->app->bindShared('commands.inspire', function()
{
return new InspireCommand;
});

Если Вам необходимо зарегистрировать команды внутри сервис-провайдера, следует вызывать метод `commands` из метода `boot` провайдера, передавая в качестве аргумента зарегистрированное имя в [IoC контейнере](/docs/ioc):
Как только команда зарегистрирована в IoC контейнере, вы можете воспользоваться методом `commands` в вашем сервис-провайдере, чтобы сделать её доступной в Artisan-е. Вам необходимо передать название, использованное при регистрации команды в IoC контейнере:

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

<a name="calling-other-commands"></a>
## Вызов других команд

Иногда может потребоваться вызвать другую команду из Вашей команды. Это можно сделать, вызвав метод `call`:
Иногда может потребоваться вызвать другую команду из вашей команды. Это можно сделать используя метод `call`:

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

0 comments on commit a3d97e7

Please sign in to comment.