Php/codeigniter/コマンド
提供: 初心者エンジニアの簡易メモ
コマンドでクラス実行
パターン1
アプリケーションpathが、ci3appだったとき、Citestクラスのindexメソッドにアクセスする
env CI_ENV=development php ci3app/index.php citest index
class Citest extends MY_Controller { public function index() { echo 'citest/index'; } }
パターン2
アプリケーションpathが、application_project_path1だったとき、Batchクラスのtestメソッドにアクセスする
CI_ENV=production php application_project_path1/index.php batch test
class Batch extends MY_Controller { public function test() { echo 'batch/test'; } }
参考:https://qiita.com/horikeso/items/69b5329d87b30aa35d68
パラメータ追加
アプリケーションpathが、ci3appだったとき、Citestクラスのindexメソッドにアクセスし、パラメータを設定
env CI_ENV=development php ci3app/index.php citest index --userId 123 --userAge 10
class Citest extends MY_Controller { public function index() { echo "citest/index\n"; $params = $this->parseCliArguments(); log_message("info", "params=" . print_r($params,1)); echo 'userId: ' . $params['userId'] . ', userAge: ' . $params['userAge']. ', '; } /** * CLI引数を解析する汎用メソッド * * @param array $args 引数配列(通常は $this->input->server('argv')) * @param int $skip スキップする引数の数(CodeIgniterの場合は通常3) * @return array 解析されたパラメータの連想配列 */ protected function parseCliArguments($args = null, $skip = 3) { // 引数が指定されていない場合はサーバーから取得 if ($args === null) { $args = $this->input->server('argv'); } $params = []; // 必要な引数だけを処理 for ($i = $skip; $i < count($args); $i++) { if (!isset($args[$i])) { continue; } // --で始まるオプションを解析 if (strpos($args[$i], '--') === 0) { $paramName = substr($args[$i], 2); // 次の引数が値として使えるかチェック if (isset($args[$i + 1]) && strpos($args[$i + 1], '--') !== 0) { $params[$paramName] = $args[$i + 1]; $i++; // 値をスキップ } else { $params[$paramName] = true; // フラグオプション } } // --で始まらない引数の処理(必要に応じて追加) else { $params[] = $args[$i]; // 位置指定引数 } } return $params; } }