エス技研

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の関連記事

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でロギングスコープやログレベルを使用してログを出し分ける方法を解説
 
その他の「CakePHP4」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法

CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングをする方法を解説。インストール方法、読み込み方法。および、具体的なスクレイピングを実行するサンプルソースも。

CakePHP 2.3 bakeの超初心者向けフォロー講座

CakePHP 2.3 bakeの超初心者向けフォロー講座

CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装

CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。

CakePHP4、5の認証処理で認証が通らない際の確認方法と確認箇所の紹介
CakePHP4、5の認証処理で認証が通らない際の確認方法と確認箇所の紹介

CakePHP4、5系の認証処理でログイン認証が通らない場合の確認方法、確認箇所を解説。ログ出力し、ステータスを確認するが、ステータスの内容も紹介。それはそのままusernameを変更する際のポイントでもある。

CakePHP 2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法

CakePHPの検索プラグイン Search Pluginの検索処理の中で入力エリア一つで複数の項目を同時に検索する方法を解説。

CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意
CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意

CakePHPのユーザ認証に使用するオフィシャルなプラグインAuthenticationだが、CakePHP5系では Authentication Ver.3系を使う必要があるが、公式ChiffonBookが間違えている。

MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない
MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない

CakePHPの日付、日時の型であるdate型、datetime型の最大値は2999-12-31となっている。MySQLは9999年までなので違いがあるので注意が必要だ。

CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法

CakePHP4、CakePHP5でクリエビルダーを利用してテーブルからレコードを取得する際、asを使用してカラムの別名で値を取得したい場合の対応方法を解説。また、別名にはハイフンやアスタリスクなど使用できない文字がある点も解説。

CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説
CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説

responseの値を指定する方法は3系では「body」だが、4系では「withStringBody」になりる。加えてJSON形式なら「withType」で指定するなど4系では結構異なる処理がある。

CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説

CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。