やかんブログ

[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コマンドだけで作業効率化を図れます。

この記事に関するお問い合わせはこちら

ページの先頭へ