CakePHPのシェルでレベルに応じたコンソール出力を行う方法

CakePHPでシェルを使う際、コンソール出力をするにはプログラム中に$this->out($msg)を記述する。仕様は以下。

変数名 タイプ 説明 デフォルト
$message string|array 出力したい内容 null
$newlines int 出力後の改行数 1
$level int 出力レベル Shell::NORMAL

出力レベルとして指定できる値は、下記の3レベル。

フラグ 出力条件
Shell::QUIET 0 常に出力
Shell::NORMAL 1 未指定、quiet時に出力
Shell::VERBOSE 2 verbose指定時のみ出力

シェルの実行方法は次の通り。
cake shell_name [args]

オプション[args]に、出力レベルを指定することが可能。
指定しないとnormal(quietとverboseの間)になる。

cake shell_name --quiet             # quiet
cake shell_name                     # normal
cake shell_name --verbose           # verbose

シェル起動時に指定した[args]と、out()で指定した出力レベルにおける出力、非出力(×)を表にすると次の通り。

args Shell::QUIET Shell::NORMAL Shell::VERBOSE
–quiet 出力 × ×
(指定なし) 出力 出力 ×
–verbose 出力 出力 出力

結果はこんな感じに。

$this->out('Quiet message', 1, Shell::QUIET);
$this->out('Normal message', 1, Shell::NORMAL);
$this->out('Loud message', 1, Shell::VERBOSE);

cake shell_name --quiet
Quiet message

cake shell_name          
Quiet message
Normal message

cake shell_name --verbose
Quiet message
Normal message
Loud message

3レベルの使い分け方が自分にはいまいち分からないので、デバッグ時のみ確認したい値だけShell::VERBOSEを指定して、それ以外は未指定(Shell::NORMAL)でいいんじゃないかと思ってみたり。

コメントを残す

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