{{TOC}} {{DOCVER 5.0=f6e862ba51a97f2bf9865f35fd5c522c14af93a1 31.07.2015 15:36:24}} .(alert) Данная статья документации актуальна только для версии 5.0 и была удалена в версии 5.1. Описание процесса создания команд перенесено в статью ((/docs/v5/artisan Консоль Artisan)). == Введение == В дополнение к стандартным командам Artisan вы можете также создавать свои собственные команды для работы с приложением. Вы можете поместить их в папку %%(t)app/Console/Commands%%, либо в любое другое место, в котором их сможет найти автозагрузчик в соответствии с вашим файлом %%(t)composer.json%%. == Создание команды == === Создание класса === Для создания новой команды можно использовать Artisan-команду %%(sh)make:console%%, которая создаст заглушку, с которой вы можете начать работать. **Генерация нового класса команды** %%(sh) php artisan make:console FooCommand %% Эта команда создаст класс в %%(t)app/Console/Commands/FooCommand.php%%. При создании команды может быть использован параметр %%(sh)--command%% для назначения имени команды в терминале: %%(sh) php artisan make:console AssignUsers --command=users:assign %% === Написание команды === Когда вы сгенерировали класс команды, вам нужно заполнить его свойства %%(t)name%% и %%(t)description%%, которые используются при отображении вашей команды в списке команд (%%(sh)artisan list%%). Метод %%fire%% будет вызван при вызове вашей команды. В него вы можете поместить любую нужную логику. === Параметры и ключи === Методы %%getArguments()%% и %%getOptions()%% служат для определения параметров и ключей, которые ваша команда принимает на вход. Оба эти метода могут возвращать массив команд, которые описываются как массив ключей. При определении %%arguments%% массив имеет такой вид: %% [$name, $mode, $description, $defaultValue] %% Параметр %%mode%% может быть объектом %%InputArgument::REQUIRED%% или %%InputArgument::OPTIONAL%%. При определении %%options%%, массив выглядит так: %% [$name, $shortcut, $mode, $description, $defaultValue] %% Параметр %%mode%% для ключей может быть любым из этих объектов: %%InputOption::VALUE_REQUIRED%%, %%InputOption::VALUE_OPTIONAL%%, %%InputOption::VALUE_IS_ARRAY%%, %%InputOption::VALUE_NONE%%. Режим %%VALUE_IS_ARRAY%% указывает, что ключ может быть использован несколько раз при вызове команды: %% InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY %% Что позволит выполнить такую команду: %%(sh) php artisan foo --option=bar --option=baz %% Режим %%VALUE_NONE%% указывает, что ключ является простым переключателем: %%(sh) php artisan foo --option %% === Чтение ввода === Во время выполнения команды вам, конечно, потребуется доступ к параметрам и ключам, которые были переданы ей на вход. Для этого вы можете использовать методы %%argument()%% и %%option()%%. **Чтение параметра команды** %% $value = $this->argument('name'); %% **Чтение всех параметров** %% $arguments = $this->argument(); %% **Чтение ключа команды** %% $value = $this->option('name'); %% **Чтение всех ключей** %% $options = $this->option(); %% === Вывод === Для вывода сообщений вы можете использовать методы %%info()%%, %%comment()%%, %%question()%% и %%error()%%. Каждый из них будет использовать подходящие по смыслу цвета ANSI для отображении текста. **Вывод сообщения в консоль** %% $this->info('Вывести это на экран'); %% **Вывод сообщения об ошибке** %% $this->error('Что-то пошло не так!'); %% === Запрос ввода === Вы можете также использовать методы %%ask()%% и %%confirm()%% для получение ввода от пользователя. **Запрос ввода от пользователя** %% $name = $this->ask('Как вас зовут?'); %% **Запрос скрытого ввода** %% $password = $this->secret('Какой у вас пароль?'); %% **Запрос подтверждения** %% if ($this->confirm('Вы хотите продолжить? [да|нет]')) { // } %% Вы можете также передать значение по умолчанию в метод %%confirm()%%, которое должно быть либо **true**, либо **false**: %% $this->confirm($question, true); %% === Вызов других команд === Иногда необходимо вызвать другую команду из своей. Для этого используйте метод %%call%%: %% $this->call('command:name', ['argument' => 'foo', '--option' => 'bar']); %% == Регистрация команд == **Регистрация команды Artisan** Как только ваша команда написана, вам нужно зарегистрировать её в Artisan, чтобы она стала доступна для использования. Это обычно делается в файле %%(t)app/Console/Kernel.php%%. В нём вы найдёте список команд в свойстве %%(conf)commands%%. Чтобы зарегистрировать свою команду, просто добавьте её в этот список: %% protected $commands = [ 'App\Console\Commands\FooCommand' ]; %% Когда Artisan загружается, все перечисленные в этом свойстве команды будут включены в ((/docs/v5/container сервис-контейнер)) и зарегистрированы в Artisan.