2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】自作コマンドから別のArtisanコマンドを実行する方法

Last updated at Posted at 2022-10-10

Laravelには様々なArtisanコマンドがあるが、以下のコマンドで簡単にArtisanコマンドを自作できる。

php artisan make:command (コマンドファイル名

以下のようなファイルが生成される。

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

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

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

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        return 0;
    }
}

生成したCommandクラスの解説

$signatureプロパティでコマンド名を指定することができる。

protected $signature = 'test:Hello'; 

$descriptionプロパティでコマンド名を指定することができる。


protected $description = 'testです'; 

handleメソッドにコマンドで実行する処理を記述することができる。


public function handle()
{
    $this->comment('こんにちは!');
    return 0;
}

以下のコマンドで、登録されたArtisanコマンドの一覧が確認できるが先ほど作成したコマンドが登録されていることがわかる。

php artisan list

image.png
$signatureプロパティで指定したコマンドを実行すると、handleメソッドが実行される。

php artisan test:hello

image.png

自作コマンドから別のArtisanコマンドを実行する

Commandクラスのcallメソッドを実行する。

$this->call('cache:clear');
$this->call('make:controller', ['name' => 'testController']);

コマンドを実行すると、別のArtisanコマンドを呼び出すことができた!!
image.png

プロジェクトに応じた自作コマンドを作って作業効率ができそうですね!

参考

コマンドの実装方法が詳しく解説されていておすすめです。

3種類のArtisanコマンドを呼び出す方法を解説されていて、勉強になりました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?