Laravel4のartisanコマンド追加手順
2013年09月12日 12時36分
Laravel4のartisanにコマンド追加するときの手順。
テンプレ作成の為にコマンド実行
コンソールで以下のコマンド実行。
1 |
php artisan command:make Foo |
これでapp/commands/の下にFoo.phpが作成される。
コマンドの一覧に出るようにメンバ変数$nameと$descriptionを書き換える。
スタートアップにクラスを登録
app/start/artisan.phpにクラスを追加。
1 |
Artisan::add(new Foo()); |
クラスを認識させる為にautoloadファイル更新
1 |
php composer.phar dump-autoload |
オプションなど調整
生成されたFooクラスのgetArguments/getOptionsでオプションと引数の設定が出来る。
初期設定だと引数が必須になっているので [RuntimeException] Not enough arguments. と出たらここの設定を疑う。
1 2 3 4 5 6 7 8 9 10 11 |
protected function getArguments() { // InputArgument::REQUIRED // 必須 // InputArgument::OPTIONAL // 省略可 // InputArgument::IS_ARRAY // 複数値を取る // 必ず1つの引数が必要な設定 return array( array('example', InputArgument::REQUIRED, 'An example argument.'), ); } |
関数のデフォルト引数と同じで省略可オプションの後に必須項目を追加するとエラーが発生する。
当たり前かもしれないけどよく出来てるなぁ。
1 2 3 4 5 6 7 8 |
protected function getArguments() { return array( // 省略可能なオプションの後に必須(REQUIRED)があるのでエラー array('example1', InputArgument::OPTIONAL, 'An example argument.'), array('example2', InputArgument::REQUIRED, 'An example argument.'), ); } |
取得も簡単で関数1つ。
1 2 3 4 |
function fire() { // getAugumentsで設定した配列の先頭がKeyになる echo $this->argument('example'); } |
実行(Fire)
コンソールより以下実行。
Fooの部分はFoo.phpの$nameで設定した名前になる。
1 |
php artisan Foo |
これでFooクラスのfireが実行される。