forked from laravelsu/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
005874c
commit a3d97e7
Showing
1 changed file
with
51 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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')); |