Laravel 5.4.12 でカスタムコマンドを試す

artisan でカスタムコマンド HelloCommand を作る

  • make:command でカスタムコマンド HelloCommand を作成。
  • --command= オプションで $signature を指定して作成できる模様。
$ php artisan make:command HelloCommand --command="command:hello {message=Hello}"
Console command created successfully.

ファイルを編集: app/Console/Commands/HelloCommand.php

  • 新規に作成された app/Console/Commands/HelloCommand.php を編集。
  • $signature に、コマンドの名称と引数を設定。 --command= オプションで指定済みの値が入っている。
  • handle() に処理を書く。
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class HelloCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:hello {message=Hello}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $funcs = ['line', 'info', 'comment', 'question', 'error'];
        foreach ($funcs as $func) {
            $this->$func($this->argument('message'));
        }
    }
}

ファイルを編集: app/Console/Kernel.php

  • 元からある app/Console/Kernel.php を編集して、 HelloCommand を登録。
<?php

    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        Commands\HelloCommand::class
    ];

引数無しで実行してみる

  • php artisan command:hello
$ php artisan command:hello
Hello
Hello
Hello
Hello
Hello

Windows7のcmdで実行した場合、出力される文字に色は付かない。

引数に Hoge と指定して実行してみる

  • php artisan command:hello Hoge
$ php artisan command:hello Hoge
Hoge
Hoge
Hoge
Hoge
Hoge

登録したカスタムコマンドを確認してみる

  • php artisan list [<namespace>]
$ php artisan list command
Laravel Framework 5.4.12
:
:
Available commands for the "command" namespace:
  command:hello   Command description

参考