CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
2024/06/23
CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
今回は「CakePHP4でコマンドプログラムを作成する」の全 4回のうちの 3回目で、「コマンドを実行する際に引数(パラメータ)を指定する方法」について解説します。
- CakePHP4 でコマンドプログラム(シェルプログラム)を作成する方法解説
- CakePHP4 のコマンドプログラムからコンポーネントを読み込む方法解説
- CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
- Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
引数(パラメータ)付きのコマンドの入力例
サンプルとして
「/src/Command/SampleTestsCommand.php」と言うコマンドプログラムに対して、「param01」「param02」「param03」という 3つの引数(パラメータ)を持たせてコマンドを実行する例です。
Linux環境でコマンドを実行するときは下記のコマンドを入力します。
1 |
$ bin/cake SampleTests param01 param02 param03 |
XAMPPなどの Windows環境では、binフォルダに移動して下記のコマンドを入力します。
1 |
$ cake SampleTests param01 param02 param03 |
引数(パラメータ)付きのコマンドから値を受け取る記述方法
上記のように指定した引数(パラメータ)をコマンドプログラムの中で取得する方法は以下のようになります。
「use」句に「ConsoleOptionParser」を追記
まず最初に、「use」句に「ConsoleOptionParser」を追記します。
1 |
use Cake\Console\ConsoleOptionParser; |
「buildOptionParser」メソッドを追記
続けて、「buildOptionParser」メソッドを追記します。
「initialize()」や「execute()」より前に記述します。
1 2 3 4 5 6 7 8 |
protected function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionParser { $parser->addArgument('name', ['help' => 'What is your name']); $parser->addArgument('height', ['help' => 'What is your height']); $parser->addArgument('weight', ['help' => 'What is your weight']); return $parser; } |
この「buildOptionParser」では、指定する引数(パラメータ)をコマンドプログラム内の変数を割り当てる設定となります。
コマンドに続けて記述する引数の順番には意味があり、ここで記述する「$parser->addArgument()
」の順番で、引数とプログラム内の変数を割り当てていきます。
今回は、引数を 3つ想定していますので「addArgument()」も 3行書いていますが、引数が 1つであれば 1行で、5つあれば 5行に増やしてください。
「buildOptionParser」で割り当てた引数を「$args->getArgument()
」で取得
「buildOptionParser」で割り当てた引数は、「execute()」メソッド内で、下記のように「$args->getArgument()
」にキーを指定して取得します。
1 2 3 |
$name = $args->getArgument('name'); $height = $args->getArgument('height'); $weight = $args->getArgument('weight'); |
ここで引数(パラメータ)をそれぞれ変数に入れましたので、あとはその変数を普通の変数と同じように利用できます。
ちなみに、引数に配列を指定することはできませんので、下記のようにカンマ区切りで引数を記述し、プログラムに取り込んだのち「,(半角カンマ)」付きの文字列を「explode()」で配列に変換する手順を取る必要があるかと思います。
1 |
$ cake SampleTests param11,param12,param13 param02 param03 |
複数の引数をまとめて指定、取得する方法「addArguments()」
複数の引数を取得する方法として、「$parser->addArgument()
」を複数書くのではなく、まとめて配列で記述する「$parser->addArguments()
」もあります。
「addArgument」が複数形になっています。
1 2 3 4 5 6 7 8 9 10 |
protected function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionParser { $parser->addArguments([ 'name' => ['help' => 'What is your name'], 'height' => ['help' => 'What is your height'], 'weight' => ['help' => 'What is your weight'], ]); return $parser; } |
異なるのは「$parser->addArguments()
」の部分のみで、「execute()」メソッド内の「$args->getArgument()
」で受け取る処理の記述方法に変更はありません。
最後に。
この記事を書くにあたって参考にしたオフィシャルサイトのページを書いておきます。
あわせて参考にしてください。
https://book.cakephp.org/4/ja/console-commands/commands.html
https://book.cakephp.org/4/ja/console-commands/option-parsers.html
CakePHP4の関連記事
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4の数値項目は「like %10%」の部分一致検索(find select)はできない
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
その他の「CakePHP4」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
CakePHP 2.3でOn Duplicate Key構文を実装
CakePHPで On Duplicate Key構文を Queryを利用して実装する方法をサンプルソース付きで解説します。
-
CakePHP4のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)
CakePHP4の英語のメッセージを日本語化(多言語化)する手順を解説。オリジナルのメッセージを作成する方法やプログラムで文言を追加する場合の対応なども解説。
-
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3で Insert … On Duplicate Key Update構文(upsert)を実行する方法を解説。バルク処理の方法も用意されているため大量処理の場合も対応可能。
-
CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法
CakePHP3のキャッシュファイルのパーミッションエラー Error: SplFileInfo::openFile()が発生した場合の対応方法解説。app.phpにキャッシュファイルのパーミッション設定を行い、既存のファイルは削除。
-
CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法
CakePHPの同一テーブルにある項目の値を比較し条件に合致するレコードを取得する方法を解説。[”項目名”=>”値”]ではなく[”項目名 = 項目名”]と書くところがポイント。
-
CakePHP3、CakePHP4のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3、CakePHP4では処理を高速化する手法の一つとしてキャッシュを利用している。しかし、その情報は元の情報を更新しても反映されない場合がある。そんなときはキャッシュを削除する必要がある。
-
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。
-
CakePHP4の数値項目は「like %10%」の部分一致検索(find select)はできない
CakePHP4でテーブルの数値項目に対してlike句を使用した部分一致検索を実行するとエラーが発生する。クリエービルダーの不具合だと思われ対処方法が分からない。
-
CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつテンプレートファイルがどこにあるか、設定情報ファイルがどこにあるか、を説明しつつカスタマイズの方法を解説します。
-
CakePHP3で「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」などのエラーが出たときの確認するポイント
CakePHP3の開発で発生する「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」のエラーには特有の原因もあるため、その説明と対処方法の解説。