新しくArtisanコマンドを作りたい(Artisan::add)


artisan

 悩み事

新しいArtisanコマンドを追加したい

 解決方法

php artisan command:makeコマンドが利用できます

このコマンドは作成するコマンドの土台を設定してくれます

$ php artisan command:make TestCommand
Command created successfully.

コマンドを実行することでapp/commandsディレクトリの中にTestCommand.phpを生成します
このファイルの内容は以下の通りです

<?php

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class TestCommand extends Command
{

  /**
   * コンソールコマンド名
   *
   * @var string
   */
  protected $name = 'command:name';

  /**
   *
   * コンソールコマンドの説明
   *
   * @var string
   */
  protected $description = 'Command description.';

  /**
   * コマンドのインスタンスを生成
   *
   * @return void
   */
  public function __construct()
  {
    parent::__construct();
  }

  /**
   * コンソールコマンドの実行
   *
   * @return mixed
   */
  public function fire()
  {
    //
  }

  /**
   * コンソールコマンドの引数を取得
   *
   * @return array
   */
  protected function getArguments()
  {
    return array(
      array('example', InputArgument::REQUIRED, 'An example argument.'),
    );
  }

  /**
   * コンソールコマンドのオプションを取得
   *
   * @return array
   */
  protected function getOptions()
  {
    return array(
      array('example', null, InputOption::VALUE_OPTIONAL,
        'An example option.' null),
    );
  }
}

この状態から編集していく必要があります
コマンドの詳細を記述し、fire()メソッドを実装していきます

 アドバイス

次にコマンドをArtisanに認識させます

app/start/artisan.phpファイルに以下を追記してください

\Artisan::add(new TestCommand);

プロジェクトの構造に応じて、オートローダーをダンプする必要があります

$ composer dump-autoload

コマンドが使える形で作成できました
listコマンドを実行すると新しいコマンドが表示されていることでしょう

$ php artisan list

Author:Chuck Heintzelman

Editor and Translator:syossan27
Twitter
web