laravel

LaravelのCommandクラスでコマンドラインプリケーションを作る方法

Laravelにはコンソールアプリケーションの実装をサポートするCommandと呼ばれるコンポーネントがあります。

簡単にいうとartisanコマンドを自作することができるようになります。

Commandを実装するためにはクロージャーで実装する方法とCommandクラスを実装する方法があります。

実装

今回はクラスによるCommandの作成方法について紹介します。

Commandクラスを実装するにはmake:commandコマンドでクラスの雛形を作成します。

下記のコマンドを入力してください。

php artisan make:command HelloCommand

そうすると/app/Console/Commands/HelloCommand.phpが生成されます。

実装に必要なプロパティやメソッドの雛形が含まれています。

コマンド名を$signature、コマンドの説明を$description、commandで実行する処理をhandleメソッドに記述します。

// /app/Console/Commands/HelloCommand.php
<?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 = 'hello:class'; // コマンド名

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'sample command (class)'; //コマンドの説明

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

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle() // コマンドの実行内容
    {
        $this->comment('Hello class command');
    }
}

artisan listコマンドを実行するとコマンド一覧に追加されていることが確認できます。

$ php artisan list
//結果 
(中略)
 hello
  hello:class          sample command (class)
  hello:clousure       sample command (clousure)
(中略)

結果

クラスで実装したコマンドを実行するとHelloCommandクラスのhandleメソッドが実行されて指定した文字列が出力されます。

$php artisan hello:class

// 結果
Hello class command

参考文献

PHPフレームワーク Laravel Webアプリケーション開発 バージョン8.x対応

サイト

https://laravel.com/docs/6.x/artisan