пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Artisan

  1. Artisan

Введение

Artisan — интерфейс командной строки, который поставляется с Laravel. Он содержит набор полезных команд, помогающих вам при разработке приложения. Для просмотра списка доступных команд используйте команду list:

php artisan list

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

php artisan help migrate

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

В дополнение к стандартным командам Artisan вы можете также создавать свои собственные команды. Обычно команды хранятся в папке app/Console/Commands, но вы можете поместить их в любое другое место, в котором их сможет найти и загрузить Composer.

Генерирование команд

+ 5.3

добавлено в 5.3 (28.01.2017)

Для создания новой команды используйте Artisan-команду make:command. Эта команда создаст новый класс команды в папке app/Console/Commands. Если этой папке не существует, она будет создана при первом запуске команды make:command. Сгенерированная команда будет содержать стандартный набор свойств и методов, присущих всем командам:

php artisan make:command SendEmails

Затем вам надо зарегистрировать команду, тогда она сможет быть запущена через командный интерфейс Artisan.

+ 5.2 5.1 5.0

добавлено в 5.2 (08.12.20165.1 (19.06.20165.0 (08.02.2016)

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

php artisan make:console SendEmails

Эта команда создаст класс в app/Console/Commands/SendEmails.php. При создании команды может быть использован ключ --commandдля назначения имени команды в терминале:

php artisan make:console SendEmails --command=emails:send

Структура команды

После генерирования команды, вам нужно заполнить свойства signature и description в её классе, которые используются при отображении вашей команды в списке команд (list). При вызове вашей команды будет вызван метод handle(). В него вы можете поместить необходимую вам логику.

Для улучшения кода, с точки зрения его повторного использования, полезно сохранять ваши консольные команды простыми и использовать в них сервисы самого приложения для выполнения их задач. Обратите внимание, что в приведённом примере мы внедряем класс сервиса для выполнения «трудоёмкой» задачи отправки писем.

Давайте посмотрим на пример команды. Мы можем внедрить любые необходимые зависимости в конструкторе команды. Сервис-контейнер Laravel автоматически внедрит все указанные в конструкторе зависимости:

<?php



namespace App\Console\Commands;



use App\User;

use App\DripEmailer;

use Illuminate\Console\Command;



class SendEmails extends Command

{

  /**

   * Имя и аргументы консольной команды.

   *

   * @var string

   */

  protected $signature = 'email:send {user}';



  /**

   * Описание консольной команды.

   *

   * @var string

   */

  protected $description = 'Send drip e-mails to a user';



  /**

   * Служба "капельных" e-mail сообщений.

   *

   * @var DripEmailer

   */

  protected $drip;



  /**

   * Создание нового экземпляра команды.

   *

   * @param  DripEmailer  $drip

   * @return void

   */

  public function __construct(DripEmailer $drip)

  {

    parent::__construct();



    $this->drip = $drip;

  }



  /**

   * Выполнение консольной команды.

   *

   * @return mixed

   */

  public function handle()

  {

    $this->drip->send(User::find($this->argument('user')));

  }

}

+ 5.3

добавлено в 5.3 (28.01.2017)

Команды замыкания

Команды на основе замыканий являются альтернативой определению консольных команд в виде классов, подобно тому, как замыкания маршрутов являются альтернативой контроллерам. В методе commands() файла app/Console/Kernel.php Laravel загружает файл routes/console.php:

/**

 * Регистрация команд на основе замыканий для приложения.

 *

 * @return void

 */

protected function commands()

{

  require base_path('routes/console.php');

}

Не смотря на то, что этот файл не определяет HTTP-маршруты, он определяет консольные входные точки (маршруты) в ваше приложение. В этом файле вы можете определить все свои маршруты на основе замыканий с помощью метода Artisan::command(). Метод command() принимает два аргумента: сигнатуру команды и замыкание, которое получает аргументы и ключи команды:

Artisan::command('build {project}', function ($project) {

  $this->info("Building {$project}!");

});

Замыкание привязано к лежащему в основе экземпляру команды, поэтому у вас есть полный доступ ко всем вспомогательным методам, которые обычно доступны вам в полном классе команды.

Указание типов зависимостей

Помимо получения аргументов и ключей вашей команды в замыканиях команд можно указывать типы дополнительных зависимостей, которые вам необходимо получить из сервис-контейнера:

use App\User;

use App\DripEmailer;



Artisan::command('email:send {user}', function (DripEmailer $drip, $user) {

  $drip->send(User::find($user));

});

Описание команд замыканий

При определении команд на основе замыканий вы можете использовать метод describe() для добавления описания команды. Это описание будет выводится при выполнении команд php artisan list или php artisan help:

Artisan::command('build {project}', function ($project) {

  $this->info("Building {$project}!");

})->describe('Build the project');

 


22.06.2017; 21:35
хиты: 121
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь