エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法

      2024/06/23

CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法

 
今回は「CakePHP4でコマンドプログラムを作成する」の全 4回のうちの 3回目で、「コマンドを実行する際に引数(パラメータ)を指定する方法」について解説します。
 

 
 

引数(パラメータ)付きのコマンドの入力例

 
サンプルとして
「/src/Command/SampleTestsCommand.php」と言うコマンドプログラムに対して、「param01」「param02」「param03」という 3つの引数(パラメータ)を持たせてコマンドを実行する例です。
 
Linux環境でコマンドを実行するときは下記のコマンドを入力します。
 

 
 
XAMPPなどの Windows環境では、binフォルダに移動して下記のコマンドを入力します。
 

 
 

引数(パラメータ)付きのコマンドから値を受け取る記述方法

 
上記のように指定した引数(パラメータ)をコマンドプログラムの中で取得する方法は以下のようになります。
 
 

「use」句に「ConsoleOptionParser」を追記

 
まず最初に、「use」句に「ConsoleOptionParser」を追記します。
 

 
 

「buildOptionParser」メソッドを追記

 
続けて、「buildOptionParser」メソッドを追記します。
「initialize()」や「execute()」より前に記述します。
 

 
この「buildOptionParser」では、指定する引数(パラメータ)をコマンドプログラム内の変数を割り当てる設定となります。
 
コマンドに続けて記述する引数の順番には意味があり、ここで記述する「$parser->addArgument()」の順番で、引数とプログラム内の変数を割り当てていきます。
 
今回は、引数を 3つ想定していますので「addArgument()」も 3行書いていますが、引数が 1つであれば 1行で、5つあれば 5行に増やしてください。
 
 

「buildOptionParser」で割り当てた引数を「$args->getArgument()」で取得

 
「buildOptionParser」で割り当てた引数は、「execute()」メソッド内で、下記のように「$args->getArgument()」にキーを指定して取得します。
 

 
ここで引数(パラメータ)をそれぞれ変数に入れましたので、あとはその変数を普通の変数と同じように利用できます。
 
 
ちなみに、引数に配列を指定することはできませんので、下記のようにカンマ区切りで引数を記述し、プログラムに取り込んだのち「,(半角カンマ)」付きの文字列を「explode()」で配列に変換する手順を取る必要があるかと思います。
 

 
 

複数の引数をまとめて指定、取得する方法「addArguments()」

 
複数の引数を取得する方法として、「$parser->addArgument()」を複数書くのではなく、まとめて配列で記述する「$parser->addArguments()」もあります。
「addArgument」が複数形になっています。
 

 
異なるのは「$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の関連記事

CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法
CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説
CakePHP4、CakePHP5の「warning: DebugKit is disabling...」の対処方法
MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない
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」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法
CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法

CakePHPの同一テーブルにある項目の値を比較し条件に合致するレコードを取得する方法を解説。[”項目名”=>”値”]ではなく[”項目名 = 項目名”]と書くところがポイント。

CakePHP4系、5系でカラムを指定して値があるかないかのチェックする
CakePHP4系、CakePHP5系のexists()でカラムを指定して値の有無をチェックする方法解説

CakePHP4、5で指定したカラムに特定の値に該当のレコードの有無をチェックするにはexists()を使う。単純にカラムを指定する方法から複数条件をand、orで探すこともできる。

CakePHP3ログファイルの出力方法・$this->log()の解説
CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説

コントロール、モデルの変数の中身を見るときはログに出力する方法が有効です。$this->log()を利用すると変数だけじゃなく、連想配列、オブジェクトも簡単にログ出力ができます。

CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。

getParam('action')で取得するアクション名は別関数に移動しても不変
getParam('action')で取得するアクション名は別関数に移動しても不変

CakePHP4系、5系では「getParam()」で処理中のアクション名を取得できる。そのアクションから別関数を呼び出してた関数でアクション名を調べたが同一の名称だった。

CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい

アソシエーション先のテーブルのカラムをキーにソートをしたデータを取得したい!ときの記述方法を解説。「orderAsc()」ではなく「contain()」の中にSort条件を記述する。

CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども

CakePHP3でHtmlHelperを使ってリンクの設定をする方法のまとめ。基本形からURLを指定、class、id、targetを指定、mailtoのリンク、画像をアンカーに、JavaScriptのダイアログなどの解説。

CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説
CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説

CakePHP4で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定しそれを読み込み判別する。

CakePHP3でテーブルにカラムを追加したときに変更するポイントのまとめ
CakePHP3でテーブルにカラム(項目)を追加したときに変更するポイントのまとめ

CakePHP3でシステム開発をする際、途中でカラムを追加した場合に何を変更すればいいかを確認。カラムを追加する前後で Bakeした結果を比較し、変更になった点をリストアップした。

CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。