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 ID以外のカラムでアソシエーション(連携)をさせる場合
ID以外のカラムでアソシエーション(連携)させるための考え方とサンプルソースを用いての説明を行っています。
-
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3で「1対多」の連携を中間テーブルを利用した「多対多」の連携に変更するときの手順のまとめ。中間テーブルの設定やModelの変更などを間違いやすい箇所を指摘しながらの解説。
-
CakePHP3で保存前にバリデーション結果を取得する2つの方法
CakePHP3でデータベースに値を保存する前にバリデーションを行い、その結果によって処理を振り分ける方法について解説。「$topic->errors()」と「$topic->hasErrors()」の2つの方法がある。
-
CakePHPを学ぶ際にはオブジェクト指向を学ぼう
CakePHPはオブジェクト指向で書かれていますので、CakePHPを学ぶにはオブジェクト指向も学びましょう。
-
CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説
CakeDC謹製UsersプラグインのCakePHP4版の紹介。ログイン認証後にリダイレクトする先の設定方法についての解説と実運用するために必要なコツを解説。便利な仕組みも仕様の理解があって初めてうまく使いこなせる。
-
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。
-
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でCSVファイルをアップロードしレコードを追加、更新する処理の作成方法の解説。モデルとは直接関連しないフォームからCSVファイルをアップロードするため汎用的に使用可能。
-
CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説
入力された値によってバリデーション(入力チェック)の内容を切り替える。その処理をCakePHPで実装する方法を解説。条件ごとに unset関数を使ってバリデーションを削除する、という方法を採る。
-
CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数
CakePHP3で特定フォルダのパスの定数を解説。root、DocumentRoot、app、config、webroot、tests、tmp、cache、vendor、コア、コアの srcが設定済み。realpath()関数を使うと柔軟なパス指定が可能。
-
CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力
CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。