エス技研

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のpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法
CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法

CakePHP環境にてpostLinkで生成した削除のリンクをクリックしても処理が実行されず、JavaScriptでUncaught TypeErrorが発生。原因は同一IDを複数記述していることだった。

Windows環境の XAMPPを利用して CakePHPの開発する際の注意点
Windows環境の XAMPPを利用して CakePHPの開発する際の注意点

WindowsベースにXAMPPで環境を構築しCakePHP4を利用したWebシステムを構築する際は、大文字と小文字の違いを意識する必要がある。LinuxベースのWebサーバに移動させたときに不具合で動作しないこともある。

CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法
CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法

CakePHP3でtitleタグ、h1タグのテキストをデフォルトから変更する方法を解説。テンプレートファイルに「$this->assign()」でテキストを指定して「/Layout/defult.ctp」で受け取る。

CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ

CakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2
CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその2でバリデーションなどの実用的なカスタマイズ方法を解説。

CakePHP4 でコマンドプログラム(シェルプログラム)を作成する方法解説
CakePHP4 でコマンドプログラム(シェルプログラム)を作成する方法解説

CakePHP4でバッチ処理を行うためのコマンド・シェルの実装方法について解説。bakeでテンプレートファイルを作成し、「execute()」に処理を記述する方法を解説。

CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説

CakePHP3でCSVファイルをアップロードしレコードを追加、更新する処理の作成方法の解説。モデルとは直接関連しないフォームからCSVファイルをアップロードするため汎用的に使用可能。

CakePHP 2.3 デバッグキット(DebugKit)超初心者向けフォロー講座

CakePHP初心者に向けてデバッグキット(DebugKit)のインストール方法、はまりポイントを解説。

CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4から外部のデータベースにアクセスする方法解説

CakePHP4のシステムから他のシステムのデータベースにアクセスをし、SQL文を実行する方法を解説。try-catchでエラーを取得する方法も解説。