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系で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」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定し、それを読み込み判別する。
-
-
URL短縮サービス「TTTオンライン(https://ttt.onl)」公開
URL短縮サービス「TTTオンライン(https://ttt.onl)」を公開。メールやSNSでは使いにくい長いURLを短いURLに変換するサービス。QRコードも。Google URL Shortenerが2019年3月にサービス終了。
-
-
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4でキャッシュをクリアするコマンドcake cache clear_allでPermission deniedのエラーが出るのはcakeにパーミッションが足りないとき。その対処方法を解説。
-
-
CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応
CakePHP3のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。
-
-
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でajaxを利用する処理の実装方法を解説。プルダウンを変更するとデータベースの値を取得し検索結果の内容を変更するというような処理を想定。CakePHP3.6以降の CSRF対策対応済。
-
-
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。
-
-
CakePHP3のプラグイン「CakeDC/Users」を日本語化・翻訳ファイルもダウンロード可
CakePHP3のユーザ管理、ログイン認証プラグインである「CakeDC/Users」のメッセージを日本語にする手順の解説とともに、日本語の翻訳ファイルを提供。ファイルを設置すれば日本語になる!
-
-
CakePHP 2.x系 Viewでのコメントの記述方法など
CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。
-
-
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHPのログ出力方法の解説。app.phpにログ設定をし、スコープやレベルを指定してログ出力を振り分ける方法、CakePHP4で配列出力にはvar_exportが必要なことなどを解説。
-
-
CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意
CakePHPのユーザ認証に使用するオフィシャルなプラグインAuthenticationだが、CakePHP5系では Authentication Ver.3系を使う必要があるが、公式ChiffonBookが間違えている。