Laravel

Laravelのコマンドに引数を使う方法

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

⇨ Laravel 記事の目次はこちら

Laravel では php artisan コマンドを自作することができます。この記事では、そのコマンドの作り方とコマンドに対して引数を使う方法についてまとめています。

環境

Laravel Framework 8.60.0

最終的にどうなるか?

コマンドに引数をつけることで、その引数をコマンドの関数の中で使うことが可能になります。

php artisan asitakara-ganbaru 明後日は休む
"明後日は休む"

コマンドを作る

最初に、「コマンドを作る」ということは、

php artisan 任意の名前

でコマンドを打てるようになります。

知らない段階だとビビりますが、恐ろしく簡単に作ることができます。

コマンドでファイルを作成する

php artisan make:command TestCommand

TestCommand というファイル名で作成しました。

App\Console\Commands\TestCommand.php

にファイルが作成されていることを確認してみてください。

コマンド名を決める(php artisan ?? の??を決める)

TestCommand.php を開いて、下記の記述がある場所を探してください

    protected $signature = 'command:name';

この場所を変更すれば良いです。任意のなんでも良い文字列を書くことができますので、分かりやすい名前をつけます。

protected $signature = 'asitakara-ganbaru';

次に、このコマンドで実行する関数を書きます

下記の記述がある場所を探してください

    public function handle()
    {
        return 0;
    }

こちらの記述を下に書き換えます。

    public function handle()
    {
        dd('明日からがんばる');
    }

コマンドを実行してみる

コマンドを打ってみます。

php artisan asitakara-ganbaru
"明日からがんばる"

このように表示されたら成功です。

コマンドが実行されました。

引数を設定する

続いて、本題である引数を設定してみます。

protected $signature = 'asitakara-ganbaru {text}';
    public function handle()
    {
        $text = $this->argument('text');
        dd($text);
    }

このようにコードを変更してみてください。

引数で使いたい名前を signature で設定し、$this->argument で呼び出します。

実際にコマンドを引数付きで打ってみます。

php artisan asitakara-ganbaru 明後日は休む
"明後日は休む"

うまくいきました!

optional の設定

この記述だと、必ず引数を設定しないとコマンドが下記のようなエラーになります。

Not enough arguments (missing: "text").

ですので、引数がなくても実行できるようにしたい場合は、optional を設定します。

protected $signature = 'asitakara-ganbaru {text?}';

?を付け足しただけです。

これで実行すると、

php artisan asitakara-ganbaru
null

optional の設定が可能になりました。

デフォルトの設定

引数が空の時、デフォルトの設定が可能です。

 protected $signature = 'asitakara-ganbaru {text=明日から頑張る}';

実行します。

php artisan asitakara-ganbaru
"明日から頑張る"

配列の引数

protected $signature = 'asitakara-ganbaru {text*}';
hp artisan asitakara-ganbaru 明日から頑張る 明後日も頑張る
array:2 [
  0 => "明日から頑張る"
  1 => "明後日も頑張る"
]

配列の optional

protected $signature = 'asitakara-ganbaru {text?*}';

関連記事

Laravel で定期実行(スケジューラー)を設定する方法

Laravel の make:command はどんな時に使うのか?

まとめ

以上です。

この記事はLaravel のドキュメントに書かれた内容を実際に例を出しながら動かしてみた記事となります。

最初はどこに何が書いてあるか分からないと思いますが、徐々に慣れていきましょう。

感想・苦情は TwitterDM にご連絡ください。

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する