[Symfony] Symfony 1.2でSymfonyコマンドのタスクを作成する。
2009年04月30日(木)09:00|谷口
谷口です。
Symfony1.2でSymfonyコマンドで実行できるタスクの作成方法を紹介します。
1. 新規タスクを生成する。
> symfony generate:task namespace:taskname
上記コマンドを実行すると、アプリケーションのルート /lib/task/NamespaceTasknameTask.class.phpが作成されます。
2. 新規タスクの設定をする。
1.で作成されたファイルのconfigure()メソッドに各種設定を書きます。 引数、オプション、symfony -Tで表示されるコメントなどが設定できます。 各設定の書き方はスケルトンに例がありますので、そちらを参照していただければと思います。 また、スケルトンではDBのコネクションがPropelになってますので、Doctrineを採用している方はここも変更する必要があります。
3. 処理を書く。
2.と同様に作成されたファイルのexecute()メソッドに処理内容を記述します。
何かコンソールに出力したい場合は、下記のようにすることで標準出力に書き出されます。
$this->logSection($this->name, $log_message, $message_size);
4. 実行方法
> symfony namespace:taskname [options] [arguments]
また、他のタスクから呼び出す場合、以下のように呼び出すことができます。
$task = new NamespaceTasknameTask.class.php($this->dispatcher, $this->formatter);
$return = $task->run($arguments_array, $options_array);
タスクやアクションから呼び出した際に、何か戻り値を得たい場合は、
execute()メソッド内で通常の関数と同様に、
return $return_value;
と記述すればOKです。
※コマンド実行では考慮されませんので、system関数やexec関数でsymfonyコマンド形式で呼び出す場合は受取れません。
よく実行するコマンド群をまとめて行うタスクを作る(例えば、build-model → build-sql → cache:clear)とかも、 作れますので、symfonyコマンドだけで作業効率化を図れます。